我正在使用SQL Server 2012。
我正在将一些视图从一个数据库复制到另一个数据库。我知道我可以使用任务>生成脚本为我这样做,但是我想知道如何以不同的方式做到这一点。
如果我运行查询select * FROM INFORMATION_SCHEMA.VIEWS,它显然会返回我当前数据库中的视图列表。在view_definition列中,我可以看到它具有创建视图的脚本。
我想知道如何循环(select * FROM INFORMATION_SCHEMA.VIEWS)的结果并执行view_definition字段中的脚本吗?我知道这可能不是最好的做法,但我只是想了解你将如何做这样的事情。
答案 0 :(得分:3)
您可以尝试打开游标并为每行创建视图:
USE [Target DB];
DECLARE @view VARCHAR(MAX)
DECLARE curs CURSOR
FOR SELECT VIEW_DEFINITION FROM [Source DB].INFORMATION_SCHEMA.VIEWS
OPEN curs
FETCH NEXT FROM curs
INTO @view
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@view)
FETCH NEXT FROM curs
INTO @view
END
CLOSE curs
DEALLOCATE curs