【问题标题】:'use' in an OPENQUERY statement在 OPENQUERY 语句中“使用”
【发布时间】:2013-08-01 06:03:44
【问题描述】:

是否可以在 OPENQUERY 中执行“使用”语句?

这行得通:

SELECT *
FROM OPENQUERY(
    server_name, 
    'select * from AdventureWorks.Person.Address'
)

这不是:

SELECT *
FROM OPENQUERY(
    server_name, 
    'use AdventureWorks; select * from Person.Address'
)

【问题讨论】:

  • 我认为 - 不。为什么需要直接指定数据库?
  • 感谢格式化devart!
  • 我有一个要在生产和 UAT 上执行的查询(两个不同的架构,相同的查询)

标签: sql sql-server tsql


【解决方案1】:

试试这个 -

DECLARE 
      @SQL NVARCHAR(500)
    , @ServerName NVARCHAR(100) = 'server_name'
    , @DbName NVARCHAR(100) = DB_NAME() -- current db_name

SELECT @SQL = '
SELECT *
FROM OPENQUERY(
    '+ @ServerName + ', 
    ''SELECT * FROM [' + @DbName + '].Person.Address''
)'

PRINT @SQL
EXEC sys.sp_executesql @SQL

【讨论】:

  • 感谢开发,还不错!不幸的是,我对正在执行的查询没有太多控制权。我所知道的只是它工作的架构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多