2013-09-18 2 views
1

У меня есть запрос SQL Server 2012, который использует OPENDATASOURCE. Я хочу создать строку init отдельно, а затем вызвать OPENDATASOURCE, чтобы избежать использования динамического SQL. Команда, которую я использую, как это:SQL Server 2012: OPENDATASOURCE не принимает переменные, только литеральные строки?

set @connection_string = 'Data Source='+ @ServerName + ';User ID=' + @UserName + ';Password=' + @Pass 

select * 
from opendatasource('SQLOLEDB', @connection_string)... 

Однако, когда я запускаю это, я получаю ошибку

Incorrect syntax near '@connection_string'. Expecting STRING, or TEXT_LEX. 

Могу ли я не разрешено использовать переменную в OPENDATASOURCE?

ответ

3

OPENDATASOURCE не принимает переменные для своих аргументов.

Источник: http://technet.microsoft.com/en-us/library/ms179856.aspx

+0

@ обсуждения user884248 прочитанное Erland Sommarskog в динамическом SQL для временного решения. См. Раздел «OPENQUERY», который также не принимает переменные: http://www.sommarskog.se/dynamic_sql.html –

+0

Спасибо, я пропустил эту часть – user884248

Смежные вопросы