sql server查询以检索所有约束信息

时间:2018-02-26 15:42:47

标签: sql-server constraints

我有一个工作流,在另一个名为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'); 

有没有办法将所有约束从一个数据库复制到另一个数据库(在同一个表上)?

提前致谢

0 个答案:

没有答案