我们正在运行 SQL Server 2008 R2 并创建一个归档函数,该函数将创建一个新数据库(以后可以脱机并存储在其他地方),然后从我们的主数据库中取出数据并将其放入新数据库,最后创建主数据库中的视图以查看新表中的存档数据。
我有创建数据库的脚本,在新数据库中创建存档表,从主数据库复制记录并将它们放入存档数据库并从主数据库中删除记录。现在我正在尝试编写视图的创建脚本:
declare @sql varchar(8000)
set @sql = 'create view [' + @srcdb + '].[dbo].[vw_artrans] as
select * from [' + @srcdb + '].[dbo].artrans
union
select * from [' + @archdb + '].[dbo].artrans'
exec (@sql)
但是您不能传递数据库的名称来创建视图。
所以我尝试了这个:
declare @sql varchar(8000)
set @sql = 'use ' + @srcdb + '
go
create view [vw_artrans] as
select * from [' + @srcdb + '].[dbo].artrans
union
select * from [' + @archdb + '].[dbo].artrans'
exec (@sql)
但它现在抱怨 GO 语句(语法不正确)。
为存档数据创建的数据库的名称在脚本中动态确定(@archdb
包含名称),因此我无法在数据库名称中编写脚本,也无法运行第二个脚本。