跨服务器跨数据库操作测试环境及同步要求: 有数据库服务器srv1和srv2,两台电脑能互相访问,有数据 要求: --大致的处理步骤 --2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动
--a.在srv1..author中创建触发器,实现数据即时同步 --修改同步 --删除同步 ***************************************************************************************************************
来创建一个数据库连接对象,用来连接另一个数据库,然后在执行跨数据库操作时只需要在你要操作的表前加上 你的数据库连接名字.dbo.表明 例如:我有个库叫billing,有多个库叫subscription1,subscription2,subscription3.........,billing库中有个表叫SuspendRecord,subscrption 库中有个表叫ActivePlan 然后我要将subscription1 库中ActivePlan的phoneNumber收集到billing库的SuspendRecord表中,可以执行如下语句: insert into SuspendRecord phoneNumber select phoneNumber from 你的数据库连接名字.subscription1的库名.dbo.ActivePlan 注:创建数据库连接的语句只能被执行一次,如果数据库中存在聪明的连接对象,则再次创建同名的连接对象数据库就会报错,所以创建前需要检查是否存在同名的连接对象,方法如下 select name from sys.servers where name=数据库连接名称 建议:数据库连接名称生成规则:数据库连接地址+数据库名称+用户名+密码的hashCode作为连接名称,这样用户修改数据库用户名、密码等信息将不会对程序造成影响 *************************************************************************************************************** sp_addlinkedserver 创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server?,则可执行远程存储过程。 语法 sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'da
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ] 参数 [ @server = ] 'server' 要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。 如果有多个 SQL Server 实例,server 可以为 servername\instancename。此链接的服务器可能会被引用为下面示例的数据源: SELECT *FROM [servername\instancename.]pubs.dbo.authors. 如果未指定 da [ @srvproduct = ] 'product_name' 要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_name、da [ @provider = ] 'provider_name' 与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。 [ @datasrc = ] 'da 由 OLE DB 提供程序解释的数据源名称。da 当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername\instancename 的形式指定 da [ @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 提供程序 上面可以在Transact-SQL帮助里找到 例子: 1.如果要访问的计算机名称为new(同局域网内可以共享访问,计算机名字规则) sp_addlinkedserver 'new' select * from new.pubs.dbo.jobs 2.如果要访问的计算机ip是192.168.100.189(计算机名称不和sql语法(可以在我的电脑属性里修改)或要访问的是一个静态ip或域名) --添加远程sql服务器 sp_addlinkedserver 'new', ' ', 'MSDASQL', NULL, NULL, 'Driver={SQL Server};Database=hjdb;Server=192.168.100.189;UID=sa;PWD=;' select * from new.pubs.dbo.jobs 补充:sp_helpserver 显示所有链接的服务器信息 sp_dropserver 删除链接服务器的定义 |
|
来自: 家住天地 > 《sqlserver》