Wie dynamisch deklarieren PARTITION ANGEBOT IN der Partition-Funktion in sql server
Möchte ich dynamisch deklarieren Sie die Palette von meiner partition-Funktion.
Ich will nicht zu hart-code der range-Wert,wie folgt:
CREATE PARTITION FUNCTION PartFun(smallint)ALS RANGE-LINKS FÜR WERTE (1,2,3,4,5)
Das problem ist:Die Spalte(ID IDMASTER Tabelle) auf, das will ich "partition erstellen" ist der smallint-Datentyp.
Declare @IDS NVARCHAR(100)
SELECT @IDS = coalesce(@IDS + ', ', '') + CAST(a.ID AS VARCHAR) FROM
(SELECT DISTINCT TOP 100 ID from IDMASTER ORDER BY ID ) a
--PRINT @IDS --it prints 0,1,2,3,4 like that
CREATE PARTITION FUNCTION PartFun(smallint)
AS RANGE LEFT FOR VALUES (@IDS)
Immer diese Fehlermeldung:
"Konnte nicht implizit konvertiert Wertebereiche Typ angegeben Ordnungszahl 1 zu partition Funktion parameter-Typ".
Abhilfe-Idee?
Auch ist es, dass die Menschen meist hart codierten Werte für die partition reichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann nicht sein, eine exakte Lösung für das, was Sie suchen. Hier ist das Szenario, ich bin konfrontiert mit:
Wir haben eine DB, die mehrere Tabellen partitioniert auf eine Spalte mit dem Namen "PriceListDate', aber seltsam, der Datentyp ist vom Datentyp Varchar(8). Wir sind mitten in der Neugestaltung der Anwendung und der DB, so beschlossen, ändern Sie den Datentyp 'Datum'. Hier ist, wie wir dies dynamisch:
Hoffe, das gibt Ihnen einige Ideen.
Raj
Dank, hab die Idee.
So habe ich es gelöst:
So ist die Lösung:Dynamische SQL-und alles so NVARCHAR!
Gut, was Sie tun können, ist dies:
Verwenden Sie QuoteName(exp,"")
Während der Erstellung Ihres Zeichenfolge-Werte (in diesem Fall-ids) und der rest bleibt gleich. Dann führen Sie es normalerweise und es funktioniert Super.