一、跨數據庫訪問
第一種方式
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=遠程ip;User ID=sa;Password=密碼'
).庫名.dbo.表名
WHERE 條件
第二種方式
在sql server組->服務->安全性->鏈接服務器下建立一個具有別名的鏈接服務器。然后通過以下方式訪問:
SELECT * FROM [鏈接服務器名].庫名.dbo.表名
WHERE 條件
需要注意的是建立鏈接數據庫服務器類型如果選擇“SQL server”,那么鏈接服務器名稱必須用要鏈接的服務器的在網絡中的機器名或IP,如果要使用其它別名,可以在WINDOWS\system32\drivers\etc\hosts文件里添加一個別名的映射。
解除SQL阻止(sqlserver 2005情況)
SQL Server 阻止了對組件 ‘Ad Hoc Distributed Queries’ 的 STATEMENT’OpenRowset/OpenDatasource’ 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 ‘Ad Hoc Distributed Queries’。有關啟用 ‘Ad Hoc Distributed Queries’ 的詳細信息,請參閱 SQL Server 聯機叢書中的 “外圍應用配置器”。
因為SQL2005默認是沒有開啟’Ad Hoc Distributed Queries’ 組件,開啟方法如下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
關閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure
二、分布式事務的配置
1.用DTCPing.exe工具測試兩臺機器的DTC服務是否可以聯通。
2.如果有問題檢查MSDTC服務是否啟動。
3.MSDTC依賴于RPC,RPC使用的端口是135,測試135端口是否打開.是否有防火墻?如果有先關了防火墻. telnet IP 135 如果是關閉的打開它.
4.打開“控制面板->管理工具->組件服務”,然后展開“組件服務->計算機->我的電腦”右鍵屬性。選擇MSDTC的Tab欄,點擊安全性配置按鈕,打開窗口,將“網絡DTC訪問”選項選中,并將“允許遠程客戶端”,“允許入站”,“允許出站”都選中,并選擇“不要求進行驗證”,“啟用事務Internet協議(TIP)事務”,“啟用XA事務”都選中。然后確定即可。(以上選項windows默認不開放,必須配置)
5.檢查你的兩臺服務器是否在同一個域中. 如果不在同一個域中,是否建立可信任聯接.
6.如果是WIN2000,升級到SP4
7.確認MDAC版本是2.6以上,最好是2.8.
8.在SQL server存儲過程中使用分布式事務時,必須SET XACT_ABORT ON --設置分布式事務如果發生問題主動回滾操作
9.可以聲明使用BEGIN DISTRIBUTED TRANSACTION,如果未明確生明,在事務塊中包含鏈接服務器的訪問,SQL server會自動升級成分布式事務。