Cách lý tưởng để kiểm tra xem cơ sở dữ liệu có tồn tại trên SQL Server bằng TSQL không? Có vẻ như nhiều cách tiếp cận để thực hiện điều này.Cách kiểm tra xem cơ sở dữ liệu có tồn tại trong SQL Server không?
Trả lời
Từ một của Microsoft kịch bản:
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 EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Bằng cách này, này đến trực tiếp từ SQL Server Studio, vì vậy nếu bạn có quyền truy cập vào công cụ này, tôi khuyên bạn nên bắt đầu chơi với nhiều "Script xxxx AS "các chức năng có sẵn. Sẽ làm cho cuộc sống của bạn dễ dàng hơn! :)
Nếu 'SỬ DỤNG [Thạc sĩ]' là bất tiện, bạn có thể trực tiếp giải quyết chế độ xem xem từ bất kỳ cơ sở dữ liệu nào như 'master.sys.databases' – ProfK
Trên thực tế nó là tốt nhất để sử dụng:
if db_id('dms') is not null
--code mine :)
print 'db exists'
Xem https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Vâng, điều đó chắc chắn ngắn hơn và khó hiểu hơn. Trong tò mò, tại sao nó tốt hơn? –
Có lẽ vì db_id an toàn hơn việc kiểm tra tên cơ sở dữ liệu ở một vị trí cụ thể trong '[master]' – Anthony
Vâng, vâng, và gần như không thể cho db_id() tồi tệ hơn (có thể phức tạp/chi phí) câu trả lời được chấp nhận vì các truy vấn db_id cho một số. Vì vậy, tôi thích đặt cược vào db_id() đang được triển khai một cách thông minh hơn, vì nó được thực hiện bởi các nhà phát triển cơ sở dữ liệu. – Eduardo
Tôi thích câu trả lời @ Eduardo và tôi thích câu trả lời chấp nhận. Tôi muốn lấy lại một boolean từ một cái gì đó như thế này, vì vậy tôi đã viết nó lên cho các bạn.
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
Bây giờ bạn có thể sử dụng nó như thế này:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
- 1. Kiểm tra xem bảng có tồn tại trong cơ sở dữ liệu hay không - PL SQL
- 2. Làm cách nào để kiểm tra xem Chế độ xem có tồn tại trong Cơ sở dữ liệu không?
- 3. Kiểm tra xem ID có tồn tại trong cơ sở dữ liệu không
- 4. Kiểm tra xem cột có tồn tại trong cơ sở dữ liệu ứng dụng trong Android
- 5. Làm cách nào để xác định liệu vai trò cơ sở dữ liệu có tồn tại trong SQL Server không?
- 6. Kiểm tra xem cơ sở dữ liệu tồn tại trước khi tạo
- 7. Làm cách nào để kiểm tra xem cột có tồn tại trong SQL Server không?
- 8. SQL để kiểm tra xem cơ sở dữ liệu có trống không (không có bảng)
- 9. Kiểm tra xem bảng có tồn tại
- 10. Thả Người dùng từ Cơ sở dữ liệu SQL Server?
- 11. Kiểm tra xem bản ghi trong bảng có tồn tại trong cơ sở dữ liệu thông qua ExecuteNonQuery
- 12. CQL: cách kiểm tra xem keyspace có tồn tại không?
- 13. Trong Android, hãy kiểm tra xem cơ sở dữ liệu sqlite có tồn tại không theo thời gian
- 14. Có lệnh nào để kiểm tra xem cơ sở dữ liệu có tồn tại từ Khung thực thể không?
- 15. Kiểm tra xem bảng có tồn tại trong C#
- 16. Kiểm tra xem thông tin đăng nhập SQL Server đã tồn tại chưa
- 17. Cách kiểm tra hiệu suất của cơ sở dữ liệu SQL Server?
- 18. Bản ghi Android tồn tại() trong cơ sở dữ liệu?
- 19. Liên kết cơ sở dữ liệu Oracle. Kiểm tra sự tồn tại hoặc ghi đè?
- 20. Thả cơ sở dữ liệu SQL Server
- 21. Mang cơ sở dữ liệu SQL Server trực tuyến
- 22. Kiểm tra xem đối tượng tồn tại trong cơ sở dữ liệu mà không tải đối tượng với NHibernate
- 23. Làm cách nào để kiểm tra xem liệu tên cột có tồn tại trong CachedRowSet không?
- 24. Bí danh cơ sở dữ liệu chéo của SQL Server
- 25. Kiểm tra xem bảng truy cập có tồn tại không
- 26. Cách tốt nhất để kiểm tra xem danh sách các mục có tồn tại trong cột cơ sở dữ liệu SQL không?
- 27. Cách chuyển đổi cơ sở dữ liệu Visual Foxpro sang cơ sở dữ liệu SQL Server
- 28. enums trong cơ sở dữ liệu SQL Server
- 29. Cách di động nào nhất để kiểm tra xem trình kích hoạt có tồn tại trong SQL Server không?
- 30. Kiểm tra cơ sở dữ liệu PHPUnit
Đó có thể là từ một kịch bản Microsoft nhưng nó không phải Microsoft khuyến cáo thực hành. Họ khuyến khích sử dụng các khung nhìn INFORMATION_SCHEMA hơn là truy cập trực tiếp vào các bảng hệ thống. – mwigdahl
không nên "KHÔNG tồn tại" chỉ là "EXISTS" –
tại sao khuyến khích sử dụng INFORMATION_SCHEMA thay vì trực tiếp sử dụng tham chiếu đến bảng? – eKek0