我已经在虚拟机中安装了 SQL Server 2008 R2“SQL Server 数据库引擎”,并且我想从其他计算机(Linux)通过 odbc 连接到它。
我没有安装管理工作室,因为我想要尽可能少的安装(它主要用于非常基本的测试目的,而不是用于实际工作)。
我还没有安装 Management Studio 而且我也不想安装它。
在安装过程中,我提供了用于连接的用户和密码,但是,看起来事情出了问题,我无法使用该用户登录。
情况:
- 我已经安装了“数据库引擎”并配置了 TCP 连接
- 我可以使用 isql 连接到它,但它报告用户不存在。
- 我看到事件日志(Windows)中抱怨用户不存在。
- 我尝试运行导入工具并设法在同一台电脑上使用 XP 用户登录并可以运行简单查询,但是此工具不允许我运行语句,所以我无法运行
CREATE LOGIN user-name WITH PASSWORD='secret'
。
我如何连接到该数据库并添加新用户?
基本上此时我有两个选择:
重新安装数据库,但是:
我不想,也没有人保证这次它会起作用并创建一个用户。
安装管理工作室我不希望它为虚拟机安装庞大的安装。
问题:
是否有任何简单的命令行工具可以访问数据库,只需使用 XP 身份验证即可运行几个语句,而无需使用庞大的管理工作室工具?
解决方案摘要:
- 用来
sqlcmd -Q "create login ..."
运行我需要的sql语句。sqlcmd.exe
是已安装“SQL Server 数据库引擎” - 安装过程中我的用户定义不正确,因为 MS SQL 不喜欢我给出的密码,而且它没有就此问题发出警报...
答案1
sqlcmd 将允许您使用 Windows 或 SQL 身份验证对服务器运行命令。如果出现问题并且最终没有 Windows 帐户被授予对服务器的权限,那么您可以在单用户模式下启动 SQL Serve 以获取访问权限并创建新帐户。
答案2
在我的系统(即 SQL 2008(不是 R2))中,sqlcmd.exe 位于“C:\Program Files\Microsoft SQL Server\100\Tools\Binn”。如果您使用的是 R2,路径可能会略有不同。您可以尝试查找“osql.exe”。osql.exe 的工作原理与 sqlcmd 大致相同,但早于 sqlcmd.exe,功能也不那么齐全。在我的系统上,osql.exe 与 sqlcmd.exe 位于同一个 Binn 目录中。
即使我打算远程管理服务器,我也发现在服务器上安装这些工具以及 SQL 服务比不安装它们要容易得多。我已经使用 SQL Server 12 年了。某些事情(如复制)很难通过手动编写 Transact-sql 来完成,因为存储过程调用可能非常复杂,而且您最终需要的一些看似微不足道的实用程序经常会缺失。