使用TSQL检查SQL Server上是否存在数据库的理想方法是什么?似乎有多种方法可以实现这一点。
当前回答
实际上,最好使用:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
请参阅https://learn.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql并注意,这对于Azure SQL数据库是没有意义的。
其他回答
实际上,最好使用:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
请参阅https://learn.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql并注意,这对于Azure SQL数据库是没有意义的。
来自微软的脚本:
DECLARE @dbname nvarchar(128)
SET @dbname = N'Senna'
IF (EXISTS (SELECT name
FROM master.dbo.databases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
顺便说一下,这直接来自SQL Server Studio,所以如果你有这个工具,我建议你开始使用各种可用的“Script xxxx AS”函数。会让你的生活更轻松!:)
试试这个
IF EXISTS
(
SELECT name FROM master.dbo.sysdatabases
WHERE name = N'New_Database'
)
BEGIN
SELECT 'Database Name already Exist' AS Message
END
ELSE
BEGIN
CREATE DATABASE [New_Database]
SELECT 'New Database is Created'
END
Public Function SQLDatabaseExist(ByVal DefaultConnectionString As String, ByVal DataBaseName As String) As Boolean
Try
'CREATE DATABASE
Dim SqlString As String = ""
SqlString = "SELECT CASE WHEN EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'" & DataBaseName & "') THEN CAST (1 AS BIT) ELSE CAST (0 AS BIT) END"
Dim ExcRet As Integer = 0
Using connection As New SqlConnection(DefaultConnectionString)
Dim command As New SqlCommand(SqlString, connection)
command.Connection.Open()
ExcRet = command.ExecuteScalar()
command.Connection.Close()
command.Dispose()
End Using
Return ExcRet
Catch ex As Exception
Return False
End Try
结束函数
注意连接字符串中的初始目录必须是master! '示例默认连接字符串
Dim DefaultConnectionString As String = "Data Source=localhost\SQLSERVER2008;Initial Catalog=Master; User ID=SA; Password='123123'; MultipleActiveResultSets=false; Connect Timeout=15;Encrypt=False;Packet Size=4096;"
推荐文章
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?
- 等价的限制和偏移SQL Server?
- 关于数据库,每个开发人员应该知道些什么?
- 如何从SQL Server中的字符串中剥离所有非字母字符?
- 为什么我不能在DELETE语句中使用别名?
- "where 1=1"语句
- 多语句表值函数vs内联表值函数
- 是使用各有一个模式的多个数据库更好,还是使用一个数据库有多个模式更好?
- 如何从Oracle的表中获取列名?
- NOLOCK提示在SELECT语句中的作用
- SQL OVER()子句-它什么时候有用,为什么有用?
- 检查SQL Server登录是否已经存在
- 我如何使用ROW_NUMBER()?
- SQL或者TSQL是图灵完备的吗?