(Voranmerkung: Ich hatte schon einmal ein ähnliches Problem hier: http://entwickler-forum.de/showthread.php?t=52115)
Beim Erzeugen einer temporären Tabelle würde ich gerne den collation_name der varchar-Spalten auf den gleichen collation_name setzen, den die anderen varchar-Spalten benutzen. Gebe ich allerdings keinen an wird der default-Wert benutzt, der nicht immer richtig ist.
Ich kann zwar statisch einen collation_name angeben mit dem COLLATE Befehl und ich kann ihn auch auslesen mit:
aber wenn ich beides kombiniere also etwa so:
kommt immer die Fehlermeldung "Falsch Syntax in der Nähe von (". Ist es nicht möglich den collation_name so dynamisch zu setzen?
Bisher hatte ich das immer wie folgt gelöst:
(durch Kopieren wird automatisch der collation_name übernommen)
In dem aktuellen Fall geht das aber nicht, da ich so keine echte AutoInc-Spalte erzeugen kann.
Was ist die einfachste Lösung hierfür?
Beim Erzeugen einer temporären Tabelle würde ich gerne den collation_name der varchar-Spalten auf den gleichen collation_name setzen, den die anderen varchar-Spalten benutzen. Gebe ich allerdings keinen an wird der default-Wert benutzt, der nicht immer richtig ist.
Ich kann zwar statisch einen collation_name angeben mit dem COLLATE Befehl und ich kann ihn auch auslesen mit:
Code:
SELECT TOP 1 COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'varchar'
Code:
CREATE TABLE #T1 (ModelName varchar(40) COLLATE (SELECT TOP 1 COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'varchar'), DeviceID varchar(40) COLLATE (SELECT TOP 1 COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'varchar'), AutoInc int constraint DF__Auto default (1))
Bisher hatte ich das immer wie folgt gelöst:
Code:
SELECT ModelName, DeviceID, DummyIntSpalte as AutoInc INTO #T1 FROM Devices WHERE (0 = 1)
In dem aktuellen Fall geht das aber nicht, da ich so keine echte AutoInc-Spalte erzeugen kann.
Was ist die einfachste Lösung hierfür?
Comment