轉–查詢資料庫-欄位-表是否存在 sqlserver

來源:互聯網
上載者:User
  

USE master
go

/*查詢資料庫是否存在*/


select * From master.dbo.sysdatabases where name='Game_Card' and Status <>512

/* 但在實際使用中,需判斷Status狀態位:
其中某些狀態位可由使用者使用 sp_dboption(read only、dbo
use only、single user等)進行設定:
1 = autoclose;使用 sp_dboption設定。資料庫完全關閉,其資源在最後一個使用者登出後釋放。
4 = select into/bulkcopy;使用 sp_dboption設定。允許使用
Select INTO語句和快速大量複製。
8 = trunc. log on chkpt;使用 sp_dboption設定。如果資料庫處於日誌截斷模式,則檢查點將截斷日誌中非活動的部分。只能為
master資料庫設定此選項。16 = torn page detection,使用 sp_dboption設定。可以檢測殘缺頁。
32 = loading。
64 = pre recovery。
128 = recovering。
256 = not recovered。
512 = offline;使用sp_dboption設定。資料庫將處於離線狀態。
1024 = read only;使用 sp_dboption設定。使用者僅能讀取資料庫中的資料而無法對其進行修改。
2048 = dbo use only;使用sp_dboption設定。只有資料庫擁有者可以使用資料庫。
4096 = single user;使用 sp_dboption設定。每次只能有一個使用者訪問資料庫。
32768 = emergency mode。
4194304 = autoshrink。
1073741824 = cleanly shutdown。
可以同時開啟多個位。

 

 

*/

--SQL Server中判斷表對象是否存在:
/*
select count(*) from sysobjects where id = object_id('資料庫名.Owner.表名')
if exists
(select count(*) from sysobjects where id = object_id('資料庫名.Owner.表名'))
print '存在'
else
print '不存在'

*/
use Game_Card
go
select count(*) from sysobjects where id = object_id('Game_Card.dbo.game_card')
if exists
(select count(*) from sysobjects where id = object_id('Game_Card.dbo.game_card'))
print '存在'


use Game_Card
go

select count(*) from  dbo.game_card

/*SQL Server中判斷表中欄位是否存在:
if exists(select * from syscolumns where name='colname1' and id=object_id('資料庫名.Owner.表名'))
print '存在'
else
print '不存在'
代表表tablename1中存在colname1欄位 */

 

查詢索引是否存在

 

SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(@tname, N'U') and NAME=@iname

其中:@tname表示建索引的表名,@iname表示索引名。

eg:

[sql] view plaincopyprint?
  1. select top 1 1 from sys.indexes where object_id=OBJECT_ID('Orders', N'U') and name='idx_cl_od'  
select top 1 1 from sys.indexes where object_id=OBJECT_ID('Orders', N'U') and name='idx_cl_od'

擴充知識

1. 在每一個資料庫中都有sys.sysobjects用於包括在資料庫中建立的每個對象(例如約束、預設值、日誌、規則以及預存程序)。詳細的說明資訊參看MSDN上的協助文檔:sys.sysobjects

2. OBJECT_ID的作用是返回架構範圍內對象的資料庫物件標識號。如果找不到資料庫或對象的名稱,例如相應名稱不存在或拼字不正確,則會返回NULL。詳細的說明資訊參看MSDN上的協助文檔:object_id

3. sys.indexes用於儲存每個表格對象(例如,表、視圖或資料表值函式)的索引或堆,詳細的說明資訊參看MSDN上的協助文檔:sys.indexes

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.