访问不同位置数据库
思韵闪耀
2010-10-01
0
1,同一服务器上  select * from brm_lvjian.dbo.bdorder  或 select * from brm_lvjian..bdorder
2,不同服务器上数据库的访问
(1)长久式:在本地服务器上创建远程连接
exec sp_addlinkedserver   'dpserver', ' ', 'SQLOLEDB ', '192.168.18.140'
exec sp_addlinkedsrvlogin 'dpserver ', 'false ',null, 'sa', 'sa'
select *  from dpserver.brm_lvjian_new.dbo.bdcustomerprotect    -- 执行:
exec sp_dropserver 'dpserver', 'droplogins'  --删除连接
注:1,或者在数据库 -- 服务器对象 -- 链接服务器上操作
查看链接服务器
sp_helplinkedsrvlogin
详细信息:select * from sys.servers
2,不可select * into 链接服务器...,而要用 insert into 链接服务器..       select ...
 注:在开Rpc的时候提示:不允许对系统目录进行即席更新! 可利用sql语句解决,方法:
 执行:
 EXEC master.dbo.sp_serveroption @server=N'serverstatistics', @optname=N'rpc', @optvalue=N'true'
 GO
 EXEC master.dbo.sp_serveroption @server=N'serverstatistics', @optname=N'rpc out', @optvalue=N'true'
 GO
 (上述代码可通过右键链接服务器,编写链接服务器脚本为 - CREATE-新查询编辑器窗口得到。)
3,设置超时时间,防止链接服务器挂掉时,无限卡
dbo.sp_serveroption @server=N'serverstatistics', @optname=N'connect timeout', @optvalue=15
connect timeout:连接到链接服务器时的超时值(秒),如果为 0,则使用 sp_configure 的默认remote query timeout 选项值。
query timeout:查询超时值 链接服务器上执行的查询的超时值(秒)。如果为 0,则使用 sp_configure 的默认 query wait 选项值。

4,测试链接服务器是否链接成功。declare @srvr nvarchar(128);
declare @retval int;

SET @srvr = 'oaserver'
EXEC @retval = sys.sp_testlinkedserver @srvr
SELECT @retval

0(成功)或 1(失败)

(2)短暂式:
1)openrowset
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
     insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
    select *from 本地表 

2)opendatasource
SELECT   * FROM   opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 

3)openquery
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')

3,链接服务器与事务
在事务中,访问链接服务器,要注意:
1)本地链接服务器内容不能在本地服务器事务中访问,因为链接服务器与发起事务服务器是同一台,故直接引用数据库名称即可。不需要转来转去。
2)在发起事务的服务器上访问链接服务器,在存储过程中执行语句前,要set xact_abort on,不然一般会报错如:
无法启动链接服务器 "bim" 的 OLE DB 访问接口 "SQLNCLI" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。

4,执行链接服务器上的函数
DECLARE @Customerid int
SET @Customerid =  (SELECT  * from OPENQUERY(BRMSERVER,'select .dbo.[GetCustomerIdByTel](0,18620023427,0)'))
SELECT @Customerid


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

将IIS设置克隆到新服务器...
将IIS设置克隆到新服务器的最佳方法是使用IIS配置文件。以下是详...
2025-06-06
网页保护、网页图片保护
1、禁止另存网页,把如下代码加入到网页body/body中 程序代...
2025-05-30
搭建Git服务器及本机克隆...
Git是什么?Git是目前世界上最先进的分布式版本控制系统。SVN...
2025-03-17
ubuntu环境下搭建gi...
操作环境:服务器:Ubuntu 24.04.2 LTS+git 2...
2025-03-17
SqlServer 数据库...
--查看数据库大小SELECT DB_NAME(database_...
2024-09-03
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26

热门资讯

sql中int型与varcha... sql中int转varchar或nvarchar,varchar或nvarchar转int的方法: ...
SQLSERVERAGENT ... 上的 SQLSERVERAGENT 服务启动过,然后又停止了。 (ObjectExplorer) 可...
SQL Server 中4个系... SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb 系统数据库...
SQL Server中如何设置... 对于已经建好的数据库表,是不能在SQL Server Management中可视化地修改ID为自增长...
该表已为了复制而被发布,所以... 场景:从发布库上将一数据库移到另一服务器,在对表改名时提示该表已为了复制而被发布,所以无法重命名。 ...
SQL Server 2008... SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解...
SQL Server (MSS... SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace2022...
如果使用没有提供选项值的 Sq... 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Sta...
传递给数据库 'master'... 传递给数据库 master 中的日志扫描操作的日志扫描号无效 错误:连接数据库的时候提示:SQL S...
数据仓库SSAS+SSIS+... 数据仓库SSAS+SSIS+SSRS SSAS- 1,用ssas生成多维度,然后利用excel的da...