PDW 的链接服务器错误
Linked Server Error for PDW
我正在尝试从 SMP 服务器连接到 PDW 实例。链接服务器已建立,我可以从 SMP 查看 PDW 数据库。但是,当我尝试从 PDW 获取 select 数据时,出现以下错误:
OLE DB provider "SQLNCLI11" for linked server "x.x.x.x,x" returned message "Unspecified error".
Msg 104386, Level 16, State 1, Line 1
Stored procedure sp_tables_info_90_rowset_64 does not exist or is not supported.
会不会跟我的ID权限有关。我使用 windows 身份验证
连接到 SMP 服务器
PDW documentation 声明:
SQL statements must be submitted using the linked server EXECUTE
statement. Using the EXECUTE statement avoids using four-part names
for objects, which is not supported by SQL Server PDW. For example:
Use this: EXEC ('SELECT * FROM AdventureWorksPDW2012.dbo.dimCustomer')
AT PDWLINK;
Don’t use this: SELECT * FROM
PDWLINK.AdventureWorksPDW2012.dbo.dimCustomer
所以我不希望能够浏览链接服务器并获得数据库列表。不过,您可以 运行 查询。
供其他人参考,PDW/APS 文档解释了如何创建连接到 PDW 的 SQL 服务器链接服务器:
EXEC master.dbo.sp_MSset_oledb_prop N'SQLNCLI', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'PDWLINK', @srvproduct=N'PDW',
@provider=N'SQLNCLI', @provstr=N'Server=<ip_control_node_cluster>,17001', @catalog=N'<database>';
GO
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'PDWLINK',@useself=N'False',
@rmtuser=N'<PDW_login_name>',@rmtpassword='<PDW_login_password>'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'rpc',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'rpc out',
@optvalue=N'true'
GO
-- The options below are not required
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'collation compatible',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'data access',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'dist',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'pub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'sub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'connect timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'collation name',
@optvalue=null
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'lazy schema validation',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'query timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'use remote collation',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'remote proc transaction promotion',
@optvalue=N'false'
GO
我正在尝试从 SMP 服务器连接到 PDW 实例。链接服务器已建立,我可以从 SMP 查看 PDW 数据库。但是,当我尝试从 PDW 获取 select 数据时,出现以下错误:
OLE DB provider "SQLNCLI11" for linked server "x.x.x.x,x" returned message "Unspecified error".
Msg 104386, Level 16, State 1, Line 1
Stored procedure sp_tables_info_90_rowset_64 does not exist or is not supported.
会不会跟我的ID权限有关。我使用 windows 身份验证
连接到 SMP 服务器PDW documentation 声明:
SQL statements must be submitted using the linked server EXECUTE statement. Using the EXECUTE statement avoids using four-part names for objects, which is not supported by SQL Server PDW. For example:
Use this: EXEC ('SELECT * FROM AdventureWorksPDW2012.dbo.dimCustomer') AT PDWLINK;
Don’t use this: SELECT * FROM PDWLINK.AdventureWorksPDW2012.dbo.dimCustomer
所以我不希望能够浏览链接服务器并获得数据库列表。不过,您可以 运行 查询。
供其他人参考,PDW/APS 文档解释了如何创建连接到 PDW 的 SQL 服务器链接服务器:
EXEC master.dbo.sp_MSset_oledb_prop N'SQLNCLI', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'PDWLINK', @srvproduct=N'PDW',
@provider=N'SQLNCLI', @provstr=N'Server=<ip_control_node_cluster>,17001', @catalog=N'<database>';
GO
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'PDWLINK',@useself=N'False',
@rmtuser=N'<PDW_login_name>',@rmtpassword='<PDW_login_password>'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'rpc',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'rpc out',
@optvalue=N'true'
GO
-- The options below are not required
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'collation compatible',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'data access',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'dist',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'pub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'sub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'connect timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'collation name',
@optvalue=null
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'lazy schema validation',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'query timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'use remote collation',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'PDWLINK', @optname=N'remote proc transaction promotion',
@optvalue=N'false'
GO