Mje*_*OsX 1 sql database sql-server stored-procedures sql-server-2008-r2
我有一个关于 SQL Server 的问题。我有一个存储过程,它应该访问另一个 SQL Server 以将数据复制到另一个服务器。
这可能吗?如果是:我该怎么做?
我找不到一些样本。
我使用 SQL Server 2008 R2
这是一个例子...
连接到第一台服务器,并运行此脚本
CREATE DATABASE [DatabaseA];
GO
CREATE TABLE [DatabaseA].[dbo].[TableA] (Id int, ValueA varchar(10));
INSERT INTO [DatabaseA].[dbo].[TableA] VALUES(1,'a'),(2,'b'),(3,'c');
Run Code Online (Sandbox Code Playgroud)
然后连接到第二台服务器,并运行这个
CREATE DATABASE [DatabaseB];
GO
CREATE TABLE [DatabaseB].dbo.[TableB] (Id int, ValueB varchar(10));
INSERT INTO [DatabaseB].dbo.[TableB] VALUES(1,'A'),(2,'B'),(3,'B');
Run Code Online (Sandbox Code Playgroud)
在与第一台服务器的连接中,我们像这样创建到第二台服务器的链接
EXEC master.dbo.sp_addlinkedserver
@server = N'LINKTOB'
,@srvproduct=N'B'
,@provider=N'SQLOLEDB'
,@datasrc=N'<NAME OF SERVER CONTAINING DatabaseB>';
Run Code Online (Sandbox Code Playgroud)
请注意,您需要更改@datasrc的值以适合您的环境。
现在我们可以在第一台服务器上运行这样的查询,在同一个查询中使用来自两个独立服务器的数据
SELECT
a.Id
,a.ValueA
,b.ValueB
FROM
[DatabaseA].[dbo].[TableA] AS a
INNER JOIN [LINKTOB].[DatabaseB].[dbo].[TableB] AS b ON a.Id = b.Id
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的

如果两台服务器位于具有相同安全设置的同一个域中,则一切都应该可以正常工作而无需进一步更改。如果没有,请查看Management Studio下的Server Objects - Linked Servers - LINKTOB。打开LINKTOB 的属性并查看安全选项卡。
| 归档时间: |
|
| 查看次数: |
8077 次 |
| 最近记录: |