因为我的业务数据库和文档数据库非常庞大,所以我分成了两个服务器,但有时需要进行跨库查询,我们就可以利用链接服务器的方法来搞定它。
--使用联结服务器
--填加联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
--创建或更新本地 Microsoft? SQL Server? 实例上的登录与链接服务器上远程登录之间的映射。
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
附:详解
创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。
sp_addlinkedserver [ @server
= ] '
server
'
[ , [ @srvproduct
= ] '
product_name
' ]
[ , [ @provider
= ] '
provider_name
' ]
[ , [ @datasrc
= ] '
data_source
' ]
[ , [ @location
= ] '
location
' ]
[ , [ @provstr
= ] '
provider_string
' ]
[ , [ @catalog
= ] '
catalog
' ]
[ @server = ] ' server '
要创建的链接服务器的本地名称,server 的数据类型为 sysname ,没有默认设置。
如果有多个 SQL Server 实例,server 可以为 servername/instancename 。此链接的服务器可能会被引用为下面示例的数据源:
[ @srvproduct = ] ' product_name '
要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128) ,默认设置为 NULL。如果是 SQL Server ,则不需要指定 provider_name 、data_source 、location 、provider_string 以及目录。
[ @provider = ] ' provider_name '
与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128) ,默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。
[ @datasrc = ] ' data_source '
由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000) ,默认设置为 NULL。data_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。
当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername /instancename 的形式指定 data_source, 它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。
[ @location = ] ' location '
OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000) ,默认设置为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。
[ @provstr = ] ' provider_string '
OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000) ,默认设置为 NULL。Provstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。
当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername /instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。
[ @catalog = ] ' catalog '
建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname ,默认设置为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。
0(成功)或 1(失败)
如果没有指定参数,则 sp_addlinkedserver 返回此消息:
Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.
使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息:
Server added.
MSSQL2000验证通过。