2010-09-29 3 views
19

Wie kann ich den Standardwert einer Spalte in einer Tabelle mithilfe einer SQL-Abfrage herausfinden?SQL Server: Finden Sie den Standardwert einer Spalte mit einer Abfrage

Durch diese gespeicherte Prozedur:

sp_columns @tablename 

ich einige Informationen über die Spalten einer bestimmten Tabelle erhalten, aber der Standardwert der Spalten fehlt, Wie kann ich es bekommen?

Antwort

48

Sie können die gespeicherte Definition finden, mit dem unter (erinnere mich an die Säule und Tabellennamen anpassen zu finden diejenigen zu Ihrer Umgebung zu sein!)

SELECT object_definition(default_object_id) AS definition 
FROM sys.columns 
WHERE name  ='colname' 
AND object_id = object_id('dbo.tablename') 
+1

Dies gibt nichts für mich auf SQL Server 2008 ... und ich weiß für eine Tatsache, dass meine sch ema/table/field names sind korrekt und es gibt tatsächlich einen Standard. – Amalgovinus

+0

@Amalgovinus funktioniert es definitiv. Führen Sie es im richtigen Datenbankkontext aus? Hat das Konto, unter dem Sie die Abfrage ausführen, ausreichende Berechtigungen zum Anzeigen der Definition? –

+0

Ja, ich hatte keine Berechtigungen. Unter anderen Umständen ist Mssql "nett" genug, um Ihnen zu sagen, dass Sie nicht auf Dinge wie sysobjects usw. zugreifen können, aber in diesem Fall gibt es nur vor, als ob nichts angezeigt wird, wenn Sie keine Datenbank verwenden, für die Sie eine Berechtigung haben . Ich musste eine Standarddatenbank einstellen, damit das überhaupt funktioniert. http://stackoverflow.com/questions/362434/how-can-i-change-my-default-database-in-sql-server-without-using-ms-sql-server-m – Amalgovinus

14

Verwendung:

SELECT so.name AS table_name, 
      sc.name AS column_name, 
      sm.text AS default_value 
    FROM sys.sysobjects so 
    JOIN sys.syscolumns sc ON sc.id = so.id 
LEFT JOIN sys.syscomments sm ON sm.id = sc.cdefault 
    WHERE so.xtype = 'U' 
     AND so.name = @yourtable 
ORDER BY so.[name], sc.colid 
7

I Verwenden Sie INFORMATION_SCHEMA:

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = @SchemaName 
    AND TABLE_NAME = @TableName 
    AND COLUMN_NAME = @ColumnName 
Verwandte Themen