这是我经常使用的技术来通过动态 SQL 执行此类操作。除了跨数据库“循环”之外,它还有其他应用程序。
现在,您没有说出是哪50 个数据库,所以我只是使用了实例中的所有内容,因为这是很常见的事情:
DECLARE @sql nvarchar(MAX);
SELECT
@sql = ISNULL(@sql, N'') +
N'ALTER TABLE ' + QUOTENAME(d.name) + N'.[dbo].[MyTable] ADD C1 int;'
FROM sys.databases d
WHERE
(d.database_id > 4) AND /* No system databases */
(d.state = 0) AND /* Online only */
(d.is_distributor = 0) AND /* Not a distribution database */
(d.is_read_only = 0) AND /* We can write to it */
/* TODO: filter me more? */;
BEGIN TRANSACTION;
EXEC(@sql);
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)
您可以sys.databases
用常量列表、主数据库表中的查询或适合您的场景的任何内容来替换该部分。也没有错误检查,因此您可能需要添加它。
(是的,我故意在上面的代码中留下了语法错误。)
归档时间: |
|
查看次数: |
10561 次 |
最近记录: |