2016-11-18 5 views
1

これは可能ですか? それは動作しません! 達成を目指す試み同義語を使用したSQL動的クエリ

Declare @SQL as varchar(1000) 

Set @SQL = 'Select ''create synonym syn_'' + t.name + '' for ['' + 
DB_NAME() + ''].[''+ s.name + ''].['' + t.name + '']'' 

from sys.tables t 
    inner join sys.schemas s 
     on t.schema_id = s.schema_id 
where t.type = ''U'' and t.name in 

(''Episode'',''MasterNPI'',''Patient'',''Enterprises'')' 

Print @SQL 
+0

心の探しているもので、何がそれで間違っていますか? – DForck42

答えて

2

あなたは完全に間違っています。クエリではselectクエリが実行され、synonymは作成されません。ここで

は、あなたが、これは実際にやろうとしているものを告げて

DECLARE @SQL AS VARCHAR(1000) 

SET @sql = (SELECT ' create synonym syn_' + t.NAME + ' for ' 
        + Quotename(Db_name()) + '.' + Quotename(s.NAME) 
        + '.' + Quotename(t.NAME) + ' ; ' 
      FROM sys.tables t 
        INNER JOIN sys.schemas s 
          ON t.schema_id = s.schema_id 
      WHERE t.type = 'U' 
        AND t.NAME IN ('Episode', 'MasterNPI', 'Patient', 
            'Enterprises') 
      FOR xml path('')) 

EXEC(@SQL) 
関連する問題