C# 使用C检查SQL server中是否已存在快照

C# 使用C检查SQL server中是否已存在快照,c#,sql-server,snapshot,C#,Sql Server,Snapshot,我想在数据库中检查快照是否已经存在。如果是,我想删除快照并创建一个新快照。我怎样才能有效地完成这项工作。也可以检查它创建的时间吗?我在后端使用C来实现它。您可以使用SQL查询来确定数据库是否是快照,然后使用C从中执行该查询 此SQL查询将帮助您确定数据库快照是否存在: select * from sys.databases where name = '<your_db>' and source_database_id is not null 关于如何在C中执行SQL的示例,我将参考

我想在数据库中检查快照是否已经存在。如果是,我想删除快照并创建一个新快照。我怎样才能有效地完成这项工作。也可以检查它创建的时间吗?我在后端使用C来实现它。

您可以使用SQL查询来确定数据库是否是快照,然后使用C从中执行该查询

此SQL查询将帮助您确定数据库快照是否存在:

select *
from sys.databases
where name = '<your_db>'
and source_database_id is not null
关于如何在C中执行SQL的示例,我将参考本文:

为了执行此查询,代码可能需要在SQL Server中提升权限,因此请注意这些功能的公开方式。我强烈建议在该链接中使用基于参数的查询,如示例所示,以避免遭受SQL注入攻击

有关如何使用SQL server确定数据库是否为快照的详细信息,请参见此问题:

本文包含有关从SQL server中删除快照的信息:

类似地,本文说明了如何创建一个:

通过代码删除快照时请小心。用于删除快照的相同权限允许用户删除数据库


本文指出创建快照的日期存储在列create_date:

中,如果是我,我会查看SMO库中的。具体来说,IsDatabseSnapshot和DatabaseSnapshotBaseName属性。如果内存可用,CreateDate应该反映快照的创建日期,而不是源数据库