ステートメントが生成される CTE がありSELECT
ますが、SQL Server (2012) では呼び出しが許可されていませんEXEC
。クエリは次のとおりです。
DECLARE @guidToFind uniqueidentifier = 'E4069560-091A-4026-B519-104F1C7693B3';
WITH GuidCols (TableName, ColName, Query) As
(
SELECT
C.TABLE_NAME,
C.COLUMN_NAME,
'SELECT ' +
QUOTENAME(C.TABLE_NAME) + '.' +
QUOTENAME(C.COLUMN_NAME) + '
FROM ' +
QUOTENAME(C.TABLE_NAME) + '
WHERE ' +
QUOTENAME(C.COLUMN_NAME) + ' = ''' + cast(@guidToFind AS VARCHAR(50))+
''''
FROM
INFORMATION_SCHEMA.COLUMNS C
INNER JOIN INFORMATION_SCHEMA.TABLES T
ON C.TABLE_NAME = T.TABLE_NAME AND
T.TABLE_TYPE = 'BASE TABLE'
WHERE
C.DATA_TYPE = 'uniqueidentifier'
)
-- SELECT * FROM
EXEC( GuidCols.Query )
SELECT
CTE の後のステートメントのコメントを外しても、問題は解決しません。
このクエリの目的は、データベース内の GUID のすべてのインスタンスを見つけることです。現在、このようなスクリプトを使用してこの問題を解決しています。ただし、セット操作やその他の手法を使用して、行を反復処理せずにこの問題を解決できれば幸いです。