我们在一台服务器上有基础数据库,在另一台服务器上有其他数据库,我们需要连接它。
如何将它们与存储过程链接起来?
CREATE PROCEDURE link_sv
@UserName nvarchar(max)='',
@Password nvarchar(max)='',
@Server nvarchar(max)='',
@DataBase nvarchar(max)=''
AS
BEGIN
-- how do it
-- select [dbo].tbl1.*,@Server.@DataBase.tblUsers.Name from [dbo].tbl1 inner join @Server.@DataBase.tblUsers on [dbo].tbl1.ID=@Server.@DataBase.tblUsers.ID
END
GO
如何编写此程序?
我用它:
SELECT a.*
FROM OPENROWSET('SQLOLEDB','Data Source=hodb01; UID=MyLogin; PWD=MyPassowrd', 'select top 1 * from HQPMMPRD.dbo.item_master') AS a
但SQL Server阻止了对语句的访问
' OpenRowset / OpenDatasource'。此组件已关闭,作为此服务器安全配置的一部分。
主机服务器中的我的数据库。我无法访问和更改安全配置。
答案 0 :(得分:2)
要enable Ad Hoc Distributed Queries on SQL Server,您可以使用sp_configure在您的服务器上执行此类命令。
但这种数据查询最准确的方法是create linked server on SQL Server数据库实例。
然后,您可以在SQL脚本中使用以下语法
INSERT INTO [linkedserver].dbname.dbo.targetTable
SELECT column1, columnN FROM sourceTable
答案 1 :(得分:2)
使用链接服务器。 请按照以下步骤
服务器对象 - >链接服务器 - >新链接服务器
提供远程服务器名称。
选择远程服务器类型(SQL Server)。
选择安全性 - > 远程服务器的登录名和密码。
或, 您可以使用查询添加链接服务器。
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
您只需创建一次链接服务器。创建链接服务器后,我们可以按如下方式查询:
select * from LinkedServerName.DatabaseName.OwnerName.TableName