While I am trying to execute the following query, I keep getting an error. I am fairly new to sp_executesql
and have been trying to work around this error. Any help is appreciated.
Query
DECLARE @db VARCHAR(20)
DECLARE @sql NVARCHAR(max)
SET @db = 'db_1' -- line 29
SET @sql = N'SELECT *
FROM [metadata].[table_name] A
JOIN [linked_server].' + @db + '.sys.objects B ON A.Tablename = B.name
JOIN [linked_server].=' + @db + '.sys.columns C ON A.columnname = C.Name
AND B.object_id = C.object_id
JOIN [linked_server].'+@db+'.sys.types D ON D.user_type_id = C.user_type_id
WHERE A.Channel =' + @db + 'AND CHECKSUM(CONVERT(VARCHAR, A.Datatype, 126),
CONVERT(INT, A.Max_Length))
<> CHECKSUM(CONVERT(VARCHAR, D.name, 126), CONVERT(INT, C.max_Length))'
EXECUTE sp_executesql @sql
Error
Msg 102, Level 15, State 1, Line 29 Incorrect syntax near '='.
There is problem in JOIN [linked_server].=' + @db
and WHERE A.Channel =' + @db + 'AND
please check this it will work
DECLARE @db VARCHAR(20)
DECLARE @sql NVARCHAR(max)
SET @db = 'db_1'
SET @sql = N'SELECT *
FROM [metadata].[table_name] A
JOIN [linked_server].' + @db + '.sys.objects B ON A.Tablename = B.name
JOIN [linked_server].' + @db + '.sys.columns C ON A.columnname = C.Name
AND B.object_id = C.object_id
JOIN [linked_server].'+@db+'.sys.types D ON D.user_type_id = C.user_type_id
WHERE A.Channel = ' + @db + ' AND CHECKSUM(CONVERT(VARCHAR, A.Datatype, 126),
CONVERT(INT, A.Max_Length))
<> CHECKSUM(CONVERT(VARCHAR, D.name, 126), CONVERT(INT, C.max_Length))'
EXECUTE sp_executesql @sql
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.