我认为您混淆了数据库名称和实例名称。SQL Server 可以安装为默认实例(在这种情况下连接到SERVERNAME就足够了),或作为命名实例(在这种情况下您需要使用SERVERNAME\INSTANCENAMEor 在某些情况下SERVERNAME,PORT_NUMBER)。您永远不会使用 连接到 SQL Server SERVERNAME\DBNAME,但您可能希望在连接字符串(或Options >>连接对话框的部分)中显式设置数据库名称,这样您的用户就不会错误地在错误的数据库中执行操作(我怀疑这就是很多用户对象最终以master, model,tempdb等结尾的方式。
在 SQL Server 2012 中,当您使用包含的数据库用户连接到部分包含的数据库时,数据库名称仅在连接字符串中是必需的。例如:
EXEC sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO
CREATE DATABASE contained;
GO
ALTER DATABASE contained SET CONTAINMENT = PARTIAL;
GO
USE contained;
GO
CREATE USER contained WITH PASSWORD = 'contained';
GO
我认为您混淆了数据库名称和实例名称。SQL Server 可以安装为默认实例(在这种情况下连接到
SERVERNAME
就足够了),或作为命名实例(在这种情况下您需要使用SERVERNAME\INSTANCENAME
or 在某些情况下SERVERNAME,PORT_NUMBER
)。您永远不会使用 连接到 SQL ServerSERVERNAME\DBNAME
,但您可能希望在连接字符串(或Options >>
连接对话框的部分)中显式设置数据库名称,这样您的用户就不会错误地在错误的数据库中执行操作(我怀疑这就是很多用户对象最终以master
,model
,tempdb
等结尾的方式。在 SQL Server 2012 中,当您使用包含的数据库用户连接到部分包含的数据库时,数据库名称仅在连接字符串中是必需的。例如:
如果我尝试使用这些凭据连接到实例,但没有在下面明确指定数据库名称
Options >>
:我收到以下错误:
在错误日志中:
如果我使用该
<Browse server...>
选项,我会收到相同的错误消息;我需要手动输入数据库:当我这样做时,我可以连接。当然,当我以包含的数据库用户身份连接时,对象资源管理器树的用处要小得多;按照设计,我只能访问该数据库:
包含数据库的出现有助于更轻松地将数据库迁移到不同的服务器。没有办法只说“好吧,我是一个包含数据库的用户,但你为什么不告诉我我被允许连接到哪个数据库?” 您需要明确,特别是因为不同的包含数据库可能有不同的用户使用相同的用户名(甚至相同的密码);系统中没有任何东西可以阻止这种情况(因为这会使迁移更加困难)。
如果您不使用包含的数据库(特别是包含的数据库用户),那么与以前的版本没有什么不同。
不
这些是 SQL Server Management Studio 在连接到数据库引擎时显示的对话框。您所要做的就是输入机器\SQL实例名称(示例机器是富士通,实例是SQL2012)