gpt4 book ai didi

c# - 在 C# 中找出我的 SQL Server 实例是否支持快照?

转载 作者:太空狗 更新时间:2023-10-29 23:18:33 24 4
gpt4 key购买 nike

我想编写 C# 代码来制作 snapshot-backup 如果可用。自 SQL Server 2005 版起支持此功能,但仅在企业版中支持,但在 Express 或 Standard 版中不支持。

我的问题:如何在 C# 中找出连接的服务器是否支持快照备份(是 Enterprise Edition 2005 或更新版本或某种“hasFeature(...)”?

我当前的解决方案围绕以下代码进行了尝试。

sqlCommand.CommandText = String.Format("CREATE DATABASE {0} ON " +
(NAME = {1}, FILENAME = \"{2}\" ) AS SNAPSHOT OF {1}",
databaseBackupName,
databaseName,
filenameOfDatabseBackup);
sqlCommand.ExecuteNonQuery();

如果我捕获到 SqlException,我假设连接的服务器不支持。

但是,尽管数据库支持快照,但可能还有其他原因导致失败(即某些东西被锁定,连接断开,...)

理想的解决方案是一些 sqlCommand.ExecuteNonQuery() 来查明是否支持该功能。

第二个最好的办法是,如果我必须包含一些可以找到它的额外 dll (?sqldmo?),但这会对项目产生额外的依赖性。

第三个最好的是某种异常处理。

最佳答案

你当然可以这样做:

SELECT  
SERVERPROPERTY('productversion') as 'Product Version',
SERVERPROPERTY('engineedition') as 'Engine Edition'

Product Version 将为您提供如下字符串:10.50.1600.1。 SQL Server 2005 是版本 9,所以任何以 9., 09.10., 11. 开头的都可以。

Engine Edition 为您提供了一个INT(1 = personal/MSDE/Express,2 = standard,3 = enterprise/developer)。

关于c# - 在 C# 中找出我的 SQL Server 实例是否支持快照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com