SQL Server数据库安全性。将数据库从一个实例附加到另一个实例

时间:2014-07-25 16:14:42

标签: sql sql-server database sql-server-2005

我在虚拟干净的Windows xp机器上安装了sql server 2005 Express。

在数据库引擎上,我创建了两个实例,其中每个实例都配置了混合身份验证,第一个用户是' sa'密码是'密码1'和第二个密码2'。

然后在第一个实例中,我创建了一个包含公共表和一些细节的新数据库。接下来我停止了第一个实例,我尝试在第二个实例中附加数据库。正如预期的那样,这导致了一个错误,并且该过程被中止。

然后我做的是更改' sa'用户和我把同一个实例放在一个实例中(' passowrd1')。现在尝试附加数据库,正确运行该进程,并在第一个实例中创建的数据库正确附加在第二个实例中。

直到这里没有什么奇怪的,我惊讶地发现了下一步。 在第二个例子中,我再次将密码更改为用户' sa'这次把它原来(' password2')并且附加的数据库保持运行。

这是我不明白为什么会以这种方式发生的事情。作为最后一次测试,我停止了第二个实例并启动了第一个实例,令我惊讶的是数据库也一直在运行。

有人可以告诉我为什么会出现这种行为吗?

我担心的是创建一个带有密码的数据库' X'然后由于某种原因有人发现密码然后更改密码,如果有人在另一个实例中附加数据库,可以使用旧密码打开它。在其他版本的sql server上发生了同样的行为吗?

是否有额外的安全层建议我申请?

1 个答案:

答案 0 :(得分:0)

SA密码不应对任何用户创建的数据库产生任何影响。它只会影响系统数据库(Master,Model,MSDB,TempDb)。当然,除非你加密了数据库文件,或者你正在进行密码保护的备份/恢复(你不是这样)。

当你第一次无法连接时,我会怀疑第一个SQL实例还没有完成关闭。您花了几分钟更改密码,然后才能附加原始数据库文件,这只是巧合。

如果您想保护数据库,以免它们被盗并附加到其他数据库,我建议您在服务器操作系统级别执行此操作。防止人们首先访问该文件。