k3b*_*k3b 5 .net c# t-sql sql-server
我想编写c#代码来进行快照备份( 如果可用).从SQL Server 2005版开始支持此功能,但仅限于企业版,但不支持Express或Standard版.
我的问题:如果连接的服务器支持快照备份(是Enterprise Edition 2005还是更新版或某种"hasFeature(...)),如何在C#中查找?
我目前的解决方案试图抓住以下代码.
sqlCommand.CommandText = String.Format("CREATE DATABASE {0} ON " +
(NAME = {1}, FILENAME = \"{2}\" ) AS SNAPSHOT OF {1}",
databaseBackupName,
databaseName,
filenameOfDatabseBackup);
sqlCommand.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
如果我抓到了,SqlException
我认为连接的服务器上没有支持.
但也许可能有其他原因导致失败,尽管数据库支持快照(即某些东西被锁定,连接被破坏,......)
理想的解决方案是sqlCommand.ExecuteNonQuery()
找出是否支持该功能.
第二个最好的是如果我必须包含一些可以找到它的额外dll(?sqldmo?),但这会为项目创建一个额外的依赖项.
第三好的是某种异常处理.
你当然可以这样做:
SELECT
SERVERPROPERTY('productversion') as 'Product Version',
SERVERPROPERTY('engineedition') as 'Engine Edition'
Run Code Online (Sandbox Code Playgroud)
该Product Version
会给你这样的字符串:10.50.1600.1
.SQL Server 2005是版本9,所以任何开头9., 09.
或10., 11.
将会好的.
该Engine Edition
给你一个INT
(1 =个人/ MSDE /快递,2 =标准,3 =企业/开发者).
归档时间: |
|
查看次数: |
439 次 |
最近记录: |