2012-05-25 55 views
0

我正在開發一些在SQL服務器之間傳輸數據的代碼。在這個階段,我所有的工作都在同一臺服務器上(本地,我是所有者),但我已經試圖實現將在生產時使用的OPENROWSET功能(數據將位於不同的服務器上,將不得不爲轉移建立查詢)。以下3個代碼應該做同樣的事情,但使用OPENROWSET的代碼給我一個錯誤... Bref,我被卡住了!如果任何人都可以幫助...在同一臺服務器上的數據庫之間的T-SQL,OPENROWSET複製表

3部分命名:工作

USE db1 
SELECT * INTO dbo.myTable FROM db2.dbo.myTable 

OPENDATASOURCE:工作

USE db1 
SELECT * INTO dbo.myTable FROM OPENDATASOURCE 
    ('SQLOLEDB', 
    'Data Source=127.0.0.1\SQLEXPRESS;Integrated Security=SSPI' 
    ).db2.dbo.myTable 

OPENROWSET:不工作

USE db1 
SELECT * INTO dbo.myTable FROM OPENROWSET 
    ('SQLOLEDB', 
    'Trusted_Connection=yes;Server=(Local)', 
    'db2.dbo.myTable') 

當我收到以下信息:

OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Login timeout expired". 
OLE DB provider "SQLNCLI" for linked server "(null)" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.". 

當然,我曾嘗試使用我的連接字符串的標準屬性(如OPENDATASOURCE),但我也收到以下錯誤:

OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Invalid authorization specification". 
OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Invalid connection string attribute". 
+0

你要使用實際的鏈接服務器的督促,或者你打算要做到這一點,每次運行OPENROWSET? – swasheck

+0

這一點仍不清楚,所以我仍然認爲我們將在沒有鏈接服務器的情況下工作。順便說一句,我已經測試OPENQUERY成功。但是我仍然很高興地明白爲什麼我不能按照預期的方式讓OPENROWSET工作。 –

+0

夠公平的。我在移動設備上,但msdn建議在這種情況下使用鏈接服務器,並且OPENROWSET可用於一次性實現。你有能力提出這樣的設計建議嗎? – swasheck

回答

0

一兩件事:你OPENROWSET語句不指定服務器實例。

嘗試

USE db1 
SELECT * INTO dbo.myTable FROM OPENROWSET 
    ('SQLOLEDB', 
    'Trusted_Connection=yes;Server=127.0.0.1\SQLEXPRESS', 
    'db2.dbo.myTable') 
相關問題