2012-05-25 6 views
0

Я разрабатываю код, который передает данные между SQL-серверами. На этом этапе все мои работы находятся на одном сервере (локальном, где я являюсь владельцем), но я уже пытаюсь реализовать функциональные возможности OPENROWSET, которые будут использоваться во время производства (где данные будут находиться на разных серверах и где я придется создавать запросы для переводов). Следующие 3 кода должны делать то же самое, но тот, который использует OPENROWSET, дает мне ошибку ... Бреф, я застрял! если кто-нибудь может помочь ...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') 
Смежные вопросы