我正在寻找一个存储过程,它接收一个数据库名称和其他参数,并且存储过程需要在它收到的数据库上工作 请有任何想法
答案 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值的一些检查,以确保它匹配它将使用的有限数据库名称列表。