我有一个工作流,在另一个名为DB2的数据库中创建名为DB1的所有Database1表;要做到这一点,我使用以下代码:
declare @TableName nvarchar(max)
declare @SqlQuery nvarchar(max)
DECLARE tableCursor CURSOR FOR
select name from wt_delivery.sys.tables where name not like '%temp%' and name not like '%acme%'
order by name
OPEN tableCursor
FETCH tableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
set @SqlQuery = N'select * into Acme.dbo.[' + @TableName + N'] from wt_delivery.dbo.[' + @TableName + N'] where 1 = 2'
print @SqlQuery
insert into acme..AcmeLog(Task,error) values('création de la table' + @TableName,ERROR_MESSAGE())
EXECUTE sp_executesql @SqlQuery
FETCH tableCursor INTO @TableName
END
CLOSE tableCursor
DEALLOCATE tableCursor
然后我运行另一个查询,以便用内容
填充DB2表问题是查询select * into tableX from tableY
没有将tableY的所有约束复制到tableX中。
创建外键我可以创建一个游标并使用以下查询:
SELECT
f.name AS foreign_key_name
,OBJECT_NAME(f.parent_object_id) AS table_name
,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name
,OBJECT_NAME (f.referenced_object_id) AS referenced_object
,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name
,is_disabled
,delete_referential_action_desc
,update_referential_action_desc
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.object_id = fc.constraint_object_id
WHERE f.parent_object_id = OBJECT_ID('action');
有没有办法将所有约束从一个数据库复制到另一个数据库(在同一个表上)?
提前致谢