【发布时间】:2011-06-16 10:54:23
【问题描述】:
我想编写 C# 代码来创建 snapshot-backup如果可用。从 SQL Server 版本 2005 开始支持此功能,但仅在企业版中,而不在 Express 或标准版中。
我的问题:如何在 C# 中找出连接的服务器是否支持快照备份(企业版 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?) 但这会为项目创建额外的依赖项。
第三好的是某种异常处理。
【问题讨论】:
-
您问题中的链接列出了快照可能无法正常工作的许多潜在原因,即使引擎支持它也是如此。我认为您已经在使用的“先试试看”的方法可能是确定快照备份实际上可能的最可靠方法
标签: c# .net sql-server tsql