sqlserver 各种判断是否存在(表名、函数、存储过程等)_MsSql

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='表名'

时间: 2024-11-03 21:59:28

sqlserver 各种判断是否存在(表名、函数、存储过程等)_MsSql的相关文章

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 = tru

sqlserver查询数据的所有表名和行数

原文:sqlserver查询数据的所有表名和行数 //查询所有表明select name from sysobjects where xtype='u' select * from sys.tables //查询数据库中所有的表名及行数 SELECT a.name AS [TABLE NAME] , b.rows AS [RECORD COUNT] FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE ( a.t

sqlserver 修改列名及表名的sql语句_MsSql

代码如下: EXEC sp_rename '表名.[原列名]', '新列名', 'column' Transact-SQL 参考 sp_rename 更改当前数据库中用户创建对象(如表.列或用户定义数据类型)的名称. 语法 sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ] 参数 [@objname =] 'object_name' 是用户对象(

SQL Server数字开头的数据库表名的解决方法_MsSql

今天遇到了个郁闷的问题,关于数据库表名的问题.     SQL Server的数据库的表名可以用数字开头,但是在查询的时候,不能直接写表名,如下:         select *         form 1_tablename     在执行过程中,报错.但是给表名加上中括号,就可以了,如下:         select *         from [1_tablename]     用VS中的DataSet开发时,会自动生成SQL语句,但是生成的SQL语句中,有的加上方括号,但是有的没

SQL Server判断数据库、表、存储过程、函数是否存在

--1.判断数据库是否存在 IF EXISTS ( SELECT * FROM sys.databases WHERE NAME = '[数据库名]' ) DROP DATABASE [数据库名] --2.判断表是否存在 IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[表名]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1 ) DROP TABLE [表名] --3.判断存储过程是

sql判断表名是否存在后进行删除

在sql使用过程中,我们在删除数据库表时,需要对表是否存在进行下判断,再进行删除操作.下边就看看如何使用sql判断表是否存在: sql代码如下:  代码如下 复制代码 if exists ( select * from INFORMATION_SCHEMA.tables where table_name = 'tab') drop table tab 可见,sql判断表是否存在非常简单,这样进行判断后再删除可以避免表不存在的错误. 我们再做得更高级一些 在sqlserver中,创建表之前判断表是

SQLSERVER实现更改表名,更改列名,更改约束代码_Android

废话不多说了,具体详情如下所示: 1.修改表名 格式:sp_rename tablename,newtablename sp_rename tablename,newtablename 2.修改字段名 格式:sp_rename 'tablename.colname',newcolname,'column' sp_rename 'tablename.colname',newcolname,'column' 3.添加字段 格式:alter table table_name add new_colum

判断数据库表是否存在以及修改表名的方法

一.判断数据库表是否存在: 首先要拿到数据库连接conn,调用DatabaseMetaData dbmd = conn.getDataMeta();之后调用如下方法: 复制代码 代码如下: /** * 根据表名,判断数据库表是否存在 * @param tableName * @return true:存在该表,false:不存在该表 */ public boolean hasTable(String tableName) { Init(); boolean result = false; //判

SQLSERVER实现更改表名,更改列名,更改约束代码

废话不多说了,具体详情如下所示: 1.修改表名 格式:sp_rename tablename,newtablename sp_rename tablename,newtablename 2.修改字段名 格式:sp_rename 'tablename.colname',newcolname,'column' sp_rename 'tablename.colname',newcolname,'column' 3.添加字段 格式:alter table table_name add new_colum