sqlserver 各類斷定能否存在(表名、函數、存儲進程等)。本站提示廣大學習愛好者:(sqlserver 各類斷定能否存在(表名、函數、存儲進程等))文章只能為提供參考,不一定能成為您想要的結果。以下是sqlserver 各類斷定能否存在(表名、函數、存儲進程等)正文
sql server中若何斷定表或許數據庫的存在,但在現實應用中,需斷定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。
可以同時翻開多個位。
比方:斷定一個數據庫能否offline
select * From master.dbo.sysdatabases where name='pubs' and status<>512
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 '不存在'
SQL Server中斷定表中字段能否存在:
if exists(select * from syscolumns where name='colname1' and id=object_id('數據庫名.Owner.表名'))
print '存在'
else
print '不存在'
代表表tablename1中存在colname1字段
例:
select * from syscolumns where name='Test' and id=object_id('dbo.test')
Access中斷定表對象能否存在:
其實,Access數據庫也有體系表,寄存有對象名
Select Count(*) AS Qty FROM MSysObjects Where ((MSysObjects.Name) Like '表名');
庫能否存在
if exists(select * from master..sysdatabases where name=N'庫名')
print 'exists'
else
print 'not exists'
---------------
-- 斷定要創立的表名能否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 刪除表
drop table [dbo].[表名]
GO
---------------
-----列能否存在
IF COL_LENGTH( '表名','列名') IS NULL
PRINT 'not exists'
ELSE
PRINT 'exists'
alter table 表名 drop constraint 默許值稱號
go
alter table 表名 drop column 列名
go
-----
--斷定要創立暫時表能否存在
If Object_Id('Tempdb.dbo.#Test') Is Not Null
Begin
print '存在'
End
Else
Begin
print '不存在'
End
---------------
-- 斷定要創立的存儲進程名能否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存儲進程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 刪除存儲進程
drop procedure [dbo].[存儲進程名]
GO
---------------
-- 斷定要創立的視圖名能否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[視圖名]') and OBJECTPROPERTY(id, N'IsView') = 1)
-- 刪除視圖
drop view [dbo].[視圖名]
GO
---------------
-- 斷定要創立的函數名能否存在
if exists (select * from sysobjects where xtype='fn' and name='函數名')
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函數名]') and xtype in (N'FN', N'IF', N'TF'))
-- 刪除函數
drop function [dbo].[函數名]
GO
if col_length('表名', '列名') is null
print '不存在'
select 1 from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'