Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使SQL Server.bak文件仅在我的应用程序中受保护和已知_Sql Server_Vb.net_Smo - Fatal编程技术网

Sql server 使SQL Server.bak文件仅在我的应用程序中受保护和已知

Sql server 使SQL Server.bak文件仅在我的应用程序中受保护和已知,sql-server,vb.net,smo,Sql Server,Vb.net,Smo,我正在使用VB.net 2013和SQL Server 2008R2 在我的应用程序中,我有两个子系统:备份和恢复(使用SMO创建),它们创建数据库备份并将备份文件恢复到SQL Server 这些都是有效的,但我有一个问题: .bak文件不受保护,因此即使没有我的程序,也可以将其还原到SQL Server 在创建和恢复.bak文件时,我可以做些什么,以便: 该文件只能在我的应用程序中还原 当我进行还原时,首先要检查所选文件是否是在我的应用程序中创建的文件,否则会显示错误,不应进行还原 谢谢大

我正在使用VB.net 2013和SQL Server 2008R2

在我的应用程序中,我有两个子系统:备份和恢复(使用SMO创建),它们创建数据库备份并将备份文件恢复到SQL Server

这些都是有效的,但我有一个问题:

.bak
文件不受保护,因此即使没有我的程序,也可以将其还原到SQL Server

在创建和恢复
.bak
文件时,我可以做些什么,以便:

  • 该文件只能在我的应用程序中还原

  • 当我进行还原时,首先要检查所选文件是否是在我的应用程序中创建的文件,否则会显示错误,不应进行还原


谢谢大家!

从SQL Server 2014开始,您可以加密备份。在SQL Server 2012之前,您可以使用密码保护媒体集(但据我所知,这并不是很好的保护)。如果您对此感到担心,您将不得不编写自己的备份/恢复机制。确保你没有错过任何东西!:)

如果您打算使用对称加密,可以很容易地从应用程序的二进制文件中提取密码。对于任何非对称算法也是如此,因为您需要在同一位置同时使用私钥和公钥(除非没有问题)

简言之,除了创建自己的备份文件格式之外,不可能按照您所说的方式执行。即使你这样做了,它也能像微软一样可靠和经过良好测试,这在哪里得到保证呢


对未来的一点建议:永远不要与DBA,尤其是公司DBA发生冲突。当你的应用程序第一次无法恢复其备份(或者完全没有错误?)或引入损坏时,你可能会比你希望的多一点了解pneuma、soma和sarx…

如果你的目标只是防止错误,那么只需1。将.bak文件重命名为类似.useMyProgram 2的文件。除了程序使用的登录名之外,不要将还原权限授予任何其他人。你说的“你自己的备份/还原机制”是什么意思?找到另一种方法来序列化不是
备份数据库
命令的数据库。我还想问一下,你想保护什么?有人可以创建自己的数据库备份,绕过您提出的任何机制。简言之,您投入的精力并不能为您提供您所认为的保护。我需要实现两件事:1)我希望如果有人获取.bak文件,我希望防止他在没有我的程序的情况下将数据库恢复到另一台sql server。2) 当用户尝试在我的应用程序内执行还原时,我希望使我的应用程序能够知道要还原的文件不是从应用程序内创建的。但是在创建备份后,我有一个.bak文件。是否可以对此文件进行自定义加密,并在还原之前删除加密?@alex,当然可以,但其他人可以为自己创建同一数据库的备份,只要他们有足够的权限。只要它是标准的SQL Server,就不会受到DBA的保护。也许您需要重新考虑您要保护什么以及您要保护谁。假设我没有这个问题,因此用户无法在sql server管理上创建备份。我唯一的问题是有人从我的程序中获取了一个已经创建的.bak文件。那么,如何防止将此.bak文件恢复到另一台sql server呢。