OPENDATASOURCE('SQLOLEDB','DataSource=192.168.1.201;Initial Catalog=DBName;user id=sa;passWord=sa').DBName.dbo.TableName
上面的語句執行會出現以下錯誤:
Msg 18456, Level 14, State 1, Line 1 用戶 'sa' 登錄失敗。 Msg 4060, Level 11, State 1, Line 1 無法打開登錄所請求的數據庫 "bbage_GameInisde"。登錄失敗。
因為OPENDATASOURCE後面已經跟了數據庫的名字(DBName),所以連接字符串中不能指定Initial Catalog。
正確的語句如下:
SELECT * FROM OPENDATASOURCE( 'SQLOLEDB', 'Data Source=192.168.1.201;User ID=sa;PassWord=sa' ).DBName.dbo.TableName
注意:上面灰色的字均為個人需要配置的東西。
執行該語句,可能會遇到以下問題:
SQL Server 阻止了對組件 'Ad Hoc Distributed QuerIEs' 的 STATEMENT'OpenRowset/OpenDatasource' 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關啟用 'Ad Hoc Distributed QuerIEs' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。
只要執行下列語句:
EXEC sp_configure ''Ad Hoc Distributed QuerIEs'' 1
RECONFIGURE
如果你沒有設置過服務器配置,可能會出現以下錯誤:
配置選項 'Ad Hoc Distributed QuerIEs' 不存在,也可能是高級選項。
這時,你就需要打開高級配置:
EXEC sp_configure 'show advanced option' 1
RECONFIGURE
總的操作就按照上面逆序執行即可:
EXEC sp_configure 'show advanced option' 1
RECONFIGURE
EXEC sp_configure 'Ad Hoc Distributed QuerIEs' 1
RECONFIGURE
注意:上面的RECONFIGURE是用以動態更新選項的操作,如果不執行,則sp_configure的執行結果不會被保持。
另外,對於SQLExpression 2005,則需要執行:
EXEC sp_configure 'user instance enabled' 1
RECONFIGURE