我刚刚开始开发一个新项目,其中数据存储在链接服务器中。我必须向暂存环境中的表添加新列,该列已存在于链接服务器中的相同表名下。
我已将数据转储到临时表中,但数据类型为小数、整数和数字的所有列都在临时数据库中转换为浮点数。另外,当我尝试访问 information_schema 或 sys.columns 以获得低于错误的元数据时。有什么解决方法可以查看链接服务器中表列的数据类型吗?
select * from openquery(LINKEDSERVER,'select * from information_schema.columns')
错误:
OLE DB provider "MSDASQL" for linked server "LINKEDSERVER" returned message "[LINKEDSERVER][ODBC 64bit driver][OpenAccess SDK SQL Engine]Base table:columns not found.[10129]".
Msg 7321, Level 16, State 2, Line 45
An error occurred while preparing the query "select * from information_schema.columns" for execution against OLE DB provider "MSDASQL" for linked server "LINKEDSERVER".
提前致谢。
如果您可以查询链接服务器,则以下操作将起作用:
select
*
from [LinkedServerInstanceHere].[DatabaseOnLinkedServerHere].information_schema.columns
只需在 [ ] 中填写您的详细信息...
我刚刚测试了它,它在我这边有效。
希望这有帮助。
我用过这个:
EXEC sp_columns_ex [ @table_server = ] 'table_server' -- linked server name
[ , [ @table_catalog = ] 'table_catalog' ] -- "database"
[ , [ @table_schema = ] 'table_schema' ] -- schema, like dbo, or xyz
[ , [ @table_name = ] 'table_name' ]
[ , [ @column_name = ] 'column' ]
[ , [ @ODBCVer = ] 'ODBCVer' ]
我找到了这个解决方案在这里。