存储过程接收要使用的DB名称

时间:2014-05-01 15:17:05

标签: sql sql-server stored-procedures

我正在寻找一个存储过程,它接收一个数据库名称和其他参数,并且存储过程需要在它收到的数据库上工作 请有任何想法

1 个答案:

答案 0 :(得分:0)

只要设置了正确的权限,就可以使用以下内容:

CREATE PROCEDURE dbo.sptest
    @DB VARCHAR(50)
AS
BEGIN

DECLARE @sqlstmt VARCHAR(MAX)
SET @sqlstmt='SELECT TOP 10 * FROM ' + @DB + '.dbo.YourTableName'

sp_executesql @sqlstmt

END
GO

如上所述,在使用像这样的动态SQL时要非常小心 - 因为能够破坏数据库的破坏,所以只能使用受信任的源。至少,您应该添加对传入的@DB值的一些检查,以确保它匹配它将使用的有限数据库名称列表。