使用 C# 检查快照是否已存在于 SQL 服务器中
Check if the snapshot already Exist in SQL server using C#
我想检查一个数据库,看看它的快照是否已经存在。如果是,我想删除快照并创建一个新快照。我怎样才能有效地做到这一点。也可以检查它的创建时间吗?我在后端使用 C# 来实现它。
您可以使用 SQL 查询来确定数据库是否为快照,然后使用 C# 执行该查询。
这个 SQL 查询应该可以帮助您确定数据库快照是否存在:
select *
from sys.databases
where name = '<your_db>'
and source_database_id is not null
我将参考这篇文章以获取如何从 C# 中执行 SQL 的示例:https://msdn.microsoft.com/en-us/library/dw70f090(v=vs.110).aspx#_SqlClient
代码可能需要在 SQL 服务器中提升权限才能执行此查询,因此请注意这些功能的公开方式。我强烈建议使用 link 示例中所示的基于参数的查询,以避免暴露于 SQL 注入攻击。
有关如何使用 SQL 服务器确定数据库是否为快照的更多信息,请参阅此问题:https://dba.stackexchange.com/questions/35105/how-can-i-query-for-existing-database-snapshots-in-sql-server
本文包含有关从 SQL 服务器中删除快照的信息:https://msdn.microsoft.com/en-us/library/ms190220.aspx
同样,这篇文章说明了如何创建一个:https://msdn.microsoft.com/en-us/library/ms175876.aspx
通过代码删除快照时请小心。用于删除快照的相同权限允许用户删除数据库。
本文指出创建快照的日期存储在列 create_date 中:https://msdn.microsoft.com/en-us/library/ms178534.aspx
如果是我,我会查看 SMO 库中的 Database class。具体来说,IsDatabseSnapshot
和 DatabaseSnapshotBaseName
属性。如果没记错,CreateDate
应该反映快照的创建日期,而不是源数据库。
我想检查一个数据库,看看它的快照是否已经存在。如果是,我想删除快照并创建一个新快照。我怎样才能有效地做到这一点。也可以检查它的创建时间吗?我在后端使用 C# 来实现它。
您可以使用 SQL 查询来确定数据库是否为快照,然后使用 C# 执行该查询。
这个 SQL 查询应该可以帮助您确定数据库快照是否存在:
select *
from sys.databases
where name = '<your_db>'
and source_database_id is not null
我将参考这篇文章以获取如何从 C# 中执行 SQL 的示例:https://msdn.microsoft.com/en-us/library/dw70f090(v=vs.110).aspx#_SqlClient
代码可能需要在 SQL 服务器中提升权限才能执行此查询,因此请注意这些功能的公开方式。我强烈建议使用 link 示例中所示的基于参数的查询,以避免暴露于 SQL 注入攻击。
有关如何使用 SQL 服务器确定数据库是否为快照的更多信息,请参阅此问题:https://dba.stackexchange.com/questions/35105/how-can-i-query-for-existing-database-snapshots-in-sql-server
本文包含有关从 SQL 服务器中删除快照的信息:https://msdn.microsoft.com/en-us/library/ms190220.aspx
同样,这篇文章说明了如何创建一个:https://msdn.microsoft.com/en-us/library/ms175876.aspx
通过代码删除快照时请小心。用于删除快照的相同权限允许用户删除数据库。
本文指出创建快照的日期存储在列 create_date 中:https://msdn.microsoft.com/en-us/library/ms178534.aspx
如果是我,我会查看 SMO 库中的 Database class。具体来说,IsDatabseSnapshot
和 DatabaseSnapshotBaseName
属性。如果没记错,CreateDate
应该反映快照的创建日期,而不是源数据库。