日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer默認(rèn)值中的所有字段的列出

此文章主要介紹的是列出SQL Server默認(rèn)值中的所有字段,上個(gè)星期我在對(duì)一個(gè)供應(yīng)商開發(fā)的實(shí)際應(yīng)用數(shù)據(jù)庫按規(guī)定進(jìn)行故障排除的時(shí)候,我們需要對(duì)他們數(shù)據(jù)庫中50個(gè)表的每一個(gè)都進(jìn)行查看,以確保所有期望是SQL Server默認(rèn)值的字段都被分配了默認(rèn)值。

目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、德城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

你可以想象這是一個(gè)多么令人畏懼的工作,而我立即提

上個(gè)星期我在對(duì)一個(gè)供應(yīng)商開發(fā)的數(shù)據(jù)庫按規(guī)定進(jìn)行故障排除的時(shí)候,我們需要對(duì)他們數(shù)據(jù)庫中50個(gè)表的每一個(gè)都進(jìn)行查看,以確保所有期望是默認(rèn)值的字段都被分配了默認(rèn)值。你可以想象這是一個(gè)多么令人畏懼的工作,而我立即提出了這個(gè)問題。有沒有一個(gè)比在SQL Server管理套件中打開每一個(gè)表來查看這個(gè)schema的更好方法嗎?

專家解答

通過查詢?nèi)魏螖?shù)據(jù)庫中的三個(gè)系統(tǒng)表,你可以獲得每個(gè)表的每一個(gè)字段的SQL Server默認(rèn)值。下面是這個(gè)核心查詢。它返回分配給當(dāng)前數(shù)據(jù)庫中每個(gè)用戶表的SQL Server默認(rèn)值。這個(gè)查詢?cè)赟QL 2000和SQL 2005中都是兼容的。

 
 
 
  1. SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"   
  2. FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id   
  3. LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id   
  4. WHERE SO.xtype = 'U'   
  5. ORDER BY SO.[name], SC.colid  

sysobjects 為我們提供了表元數(shù)據(jù)。在這個(gè)例子中,我們只對(duì)表名稱感興趣。syscolumns 表存儲(chǔ)與每個(gè)表的各個(gè)字段相關(guān)聯(lián)的元數(shù)據(jù)。在這個(gè)例子中,我們只需要字段名稱。***,SQL Server默認(rèn)值元數(shù)據(jù)由syscomments表提供。

對(duì)Northwind數(shù)據(jù)庫運(yùn)行這個(gè)查詢生成下面的結(jié)果(為了簡(jiǎn)短,省略了一些記錄)。注意,因?yàn)長(zhǎng)EFT JOIN到syscomments表所以它將返回NULL默認(rèn)值。

現(xiàn)在我在想這個(gè)很好的基本查詢版本有什么選擇。。。

選擇1:搜索特別的默認(rèn)值

通過編輯WHERE條件語句,我們可以在所有的表中查看特別的SQL Server默認(rèn)值。

 
 
 
  1. SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"   
  2. FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id   
  3. LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id   
  4. WHERE SO.xtype = 'U' AND SM.TEXT = '(0)'   
  5. ORDER BY SO.[name], SC.colid  

選擇2:只返回具有SQL Server默認(rèn)值字段的信息

修改核心查詢的WHERE條件語句來忽略syscomments.text表中的NULL值,這個(gè)技巧如下所示:

 
 
 
  1. SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"   
  2. FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id   
  3. LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id   
  4. WHERE SO.xtype = 'U' AND SM.TEXT IS NOT NULL   
  5. ORDER BY SO.[name], SC.colid  

但是,將FROM條件從句中的JOIN從一個(gè)LEFT JOIN改為一個(gè)INNER JOIN會(huì)提供優(yōu)化:

 
 
 
  1. SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"   
  2. FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id   
  3. INNER JOIN dbo.syscomments SM ON SC.cdefault = SM.id   
  4. WHERE SO.xtype = 'U'   
  5. ORDER BY SO.[name], SC.colid  

其實(shí)還有另一個(gè)選擇,利用SQL 2005中的系統(tǒng)目錄視圖。前面的查詢給我提供了這時(shí)所需要的信息,并在SQL 2000和SQL 2005中都可以使用,在SQL2000實(shí)例中可以挖掘出與這個(gè)SQL Server默認(rèn)值(實(shí)際上是一個(gè)默認(rèn)約束)關(guān)聯(lián)的額外元數(shù)據(jù)。通過將這個(gè)查詢特定在系統(tǒng)目錄視圖上,我們可以獲得在之前的查詢中沒有顯示出來的額外信息。

 
 
 
  1. SELECT ST.[name] AS "Table Name", SC.[name] AS "Column Name", SD.definition AS "Default Value", SD.[name] AS "Constraint Name"   
  2. FROM sys.tables ST INNER JOIN sys.syscolumns SC ON ST.[object_id] = SC.[id]   
  3. INNER JOIN sys.default_constraints SD ON ST.[object_id] = SD.[parent_object_id] AND SC.colid = SD.parent_column_id   
  4. ORDER BY ST.[name], SC.colid  

所以記住,就因?yàn)槟惚桓嬷獩]有更好的方法,依靠你作為一個(gè)數(shù)據(jù)庫管理員的本能來鉆研。你永遠(yuǎn)不會(huì)知道你可能會(huì)得到些什么。

【編輯推薦】

  1. SQL Server數(shù)據(jù)庫Processor Affinity概述
  2. 破解SQL Server占內(nèi)存過多很簡(jiǎn)單!
  3. SQL Server 2005快照與查詢的使用場(chǎng)景
  4. 從Oracle數(shù)據(jù)庫到SQL Server透明網(wǎng)關(guān)的正確配置
  5. SQL Server拆分字符串的3常用種方法

當(dāng)前文章:SQLServer默認(rèn)值中的所有字段的列出
瀏覽路徑:http://www.5511xx.com/article/dpschgs.html