เป็นวิธีที่เหมาะในการตรวจสอบว่าฐานข้อมูลอยู่บน SQL Server โดยใช้ TSQL อะไร ดูเหมือนว่ามีหลายวิธีที่จะใช้สิ่งนี้
เป็นวิธีที่เหมาะในการตรวจสอบว่าฐานข้อมูลอยู่บน SQL Server โดยใช้ TSQL อะไร ดูเหมือนว่ามีหลายวิธีที่จะใช้สิ่งนี้
คำตอบ:
จากสคริปต์ของ Microsoft:
DECLARE @dbname nvarchar(128)
SET @dbname = N'Senna'
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
-- code mine :)
PRINT 'db exists'
ที่จริงแล้ววิธีที่ดีที่สุดคือใช้:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
ดูhttps://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
[master]
[ ]
ในการเรียกร้องให้db_id
; นั่นคือไวยากรณ์ SQL ไม่ใช่ส่วนหนึ่งของชื่อฐานข้อมูล
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
สิ่งนี้มาจาก SQL Server Studio โดยตรงดังนั้นหากคุณสามารถเข้าถึงเครื่องมือนี้ได้ฉันขอแนะนำให้คุณเริ่มเล่นด้วยฟังก์ชั่น "Script xxxx AS" ที่มีอยู่ จะทำให้ชีวิตของคุณง่ายขึ้น! :)
ฉันชอบคำตอบของ @ Eduardo และฉันชอบคำตอบที่ยอมรับได้ ฉันชอบกลับบูลีนจากบางสิ่งเช่นนี้ดังนั้นฉันจึงเขียนมันให้คุณ
CREATE FUNCTION dbo.DatabaseExists(@dbname nvarchar(128))
RETURNS bit
AS
BEGIN
declare @result bit = 0
SELECT @result = CAST(
CASE WHEN db_id(@dbname) is not null THEN 1
ELSE 0
END
AS BIT)
return @result
END
GO
ตอนนี้คุณสามารถใช้มันได้เช่นนี้:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
ลองวิธีนี้
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