小编web*_*ad3的帖子

存储过程与内联 SQL

我知道存储过程通过执行路径更有效(比应用程序中的内联 sql)。然而,当被按下时,我对原因不是很了解。

我想知道对此的技术推理(以稍后我可以向某人解释的方式)。

谁能帮我制定一个好的答案?

performance sql-server stored-procedures query-performance

29
推荐指数
1
解决办法
3万
查看次数

从不同数据库中的 sys.columns 中提取数据

我在服务器上的一个实例上运行以下内容:

SELECT c.*
FROM sys.columns c
WHERE c.object_id = OBJECT_ID(@tablename);
Run Code Online (Sandbox Code Playgroud)

一切都很好。

我想运行相同的语句,但将其指向服务器上的另一个数据库。

数据库名.dbo.表名

我已经尝试了以下(和其他变体),但它不起作用。

SELECT c.*
FROM sys.columns c
WHERE c.object_id = OBJECT_ID('databaseName.dbo.tablename');
Run Code Online (Sandbox Code Playgroud)

有没有办法从另一个数据库获取一个数据库的列信息?

代码:

SELECT @SQL = @SQL + 'INSERT INTO myTable 
  (ColumnName,ColumnValue,SID,SName,RID,RName)
  VALUES (''' + QUOTENAME(c.name) + ''',NULL,0,NULL,0,NULL);'
            FROM sys.columns c
            WHERE c.object_id = OBJECT_ID(@tablename);

EXEC(@SQL);
Run Code Online (Sandbox Code Playgroud)

有没有办法动态地做到这一点?如果我有一个@DBName我正在传递的参数。

sql-server

3
推荐指数
2
解决办法
5565
查看次数