Lite konstig fråga kanske men finns det möjlighet att "köra" resultatet av en select. Hmmmm.... >Låter konstigt att du får plats med hela resultatet i SSMS guit (se ovan), men inte i variabeln.Köra resultat
dvs jag har en select som genererar sql-satser
ungefär så här (bara för att visa, min fråga gör något helt annat)
SELECT 'UPDATE tabell SET [' + field + '] = 1;'
FROM MyTableWithFields
Idag har jag löst det genom att kopiera resultatet och klistra in som en ny fråga men skulle behöva automatisera det.
jag provade med
DECLARE @sql as varchar(max)
SELECT @sql=@sql + 'UPDATE tabell SET [' + field + '] = 1;'
FROM MyTableWithFieldNames
EXEC @sql
men hade problem med att @sql blev för lång och trunkeradesSv: Köra resultat
Hur många tecken(bytes) har du i @sql, d.v.s. LEN(@sql)?
Kontra LEN(på det som du klistrar in)?
Frågar eftersom "Result to Grid" returnerar max 65535 tkn, och "Result to Text" returnerar 8192 tkn.
varchar(max) kan ta 2147483647 tkn.
Låter konstigt att du får plats med hela resultatet i SSMS guit (se ovan), men inte i variabeln.
Men jag kan ha missförstått något.
Du har rätt det låter konstigt, men kanske det finns en vettig orsak.
Kanske går att lösa på annat sätt?
Varför är du "tvungen" att använda den här "dynamiska" approachen?Sv:Köra resultat
I SMSS blir det många rader så det går inte riktigt att jämföra.
>varchar(max) kan ta 2147483647 tkn.
Är du säker? Har för mig att det har något med sidstorleken att göra så det är typ 4096 tecken som får plats.
>Varför är du "tvungen" att använda den här "dynamiska" approachen?
Jag återställer en backup till en annan databas och måste då byta schema på objekten
Min egentliga fråga ser ut så här:
SELECT 'ALTER SCHEMA [' + @NewDatabase + '] TRANSFER ' + ROUTINE_SCHEMA + '.' + ROUTINE_NAME + ';' FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = @OrigDatabase