【问题标题】:Unable to connect to LocalDB with HeidiSQL无法使用 HeidiSQL 连接到 LocalDB
【发布时间】:2016-06-16 07:12:17
【问题描述】:

我一直在尝试使用最新版本(此时)的 heidisql 连接到 localdb 实例,但无济于事。

我已按照此答案中的说明进行操作,但它似乎不起作用(不再):

HeidiSql connection to MS SQL Server LocalDB

我尝试了以下方法:

1) heidisql -d=LocalDB -h=%pipename% -n=3 -d=LocalDB

2) heidisql -d=LocalDB -h= np:\.\pipe\LOCALDB#41CF9FCB\tsql\query -n=3 -d=LocalDB (我意识到每次启动新的 localdb 实例时数字都会改变)

3) heidisql -d=LocalDB -h=41CF9FCB -n=3 -d=LocalDB

有什么想法吗?

编辑

Error message

【问题讨论】:

  • LocalDB 是一个进程内数据库。如果没有进程启动它,则没有人可以连接到它。您在尝试连接之前启动它了吗?
  • 您是否尝试使用 HeidiSQL 的会话管理器进行连接,而不是使用有限的命令行语法?
  • @Panagiotis 是的,我每次尝试连接时都会运行 localdb 服务。 Anse:我尝试使用 HeidiSQL 的会话管理器进行连接(使用“使用 Windows 身份验证选项”),但结果相同。

标签: sql-server localdb heidisql


【解决方案1】:

对于我Web.config中的以下连接字符串;

<add name="WEDOBADGEDatabase" connectionString="Data Source=(LocalDb)\development;Initial Catalog=WEDOBADGE;AttachDBFilename=|DataDirectory|\DevelopmentDatabase.mdf;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

最重要的信息是Data Source=(LocalDb)\development,[用正确的路径替换(当然)C:\Program Files\Microsoft SQL Server\120\,并在Data Source=(LocalDb)\之后使用连接字符串中选择的正确名称(不区分大小写,development就我而言)] 尝试:

"C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" info Development

这应该输出类似于:

Name:               Development
Version:            12.0.2000.8
Shared name:
Owner:              hostname\username
Auto-create:        No
State:              Running
Last start time:    8/2/2016 3:20:57 PM
Instance pipe name: np:\\.\pipe\LOCALDB#CDE5547F\tsql\query

从“实例管道名称”复制\\.\pipe\LOCALDB#CDE5547F\tsql\query不带初始np:。此外,您的管道名称可能与我的不同。

然后你可以像这样在 HeidiSQL 中创建一个新会话:

注意:“网络类型”、“主机名/IP”和“使用 Windows 身份验证”很重要;而其他设置(例如“数据库”)取决于您,因此您可以将它们留空/跳过等。

感谢https://stackoverflow.com/a/33748584/11895 获取管道名称建议。

【讨论】:

  • 很好的答案。那么 Sql Server Management Studio 有什么不同的做法来避免这种情况呢?我假设它可以直接查询服务以获取随机哈希。
【解决方案2】:

从 heidisql.exe 修订版 9.3.0.5108 开始,您还可以:

  1. "C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" start "MSSQLLocalDB"启动数据库
  2. "C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" info "MSSQLLocalDB" 读取“实例管道名称”(例如,\\.\pipe\LOCALDB#1B9DCF1E\tsql\query
  3. 使用"C:\Program Files\HeidiSQL\heidisql.exe --nettype=3 --host="\\.\pipe\LOCALDB#1B9DCF1E\tsql\query" --winauth=1" 启动 HeidiSQL

我使用了一个 Bash 脚本来自动化所有这些,它大致是这样的:

shopt -s expand_aliases
alias __sqllocaldb='/c/Program\ Files/Microsoft\ SQL\ Server/120/Tools/Binn/SqlLocalDB.exe'
alias __heidisql='/c/Program\ Files/HeidiSQL/heidisql.exe'
__sqllocaldb start  "Development"
hostname=$(__sqllocaldb info  "Development" | tail -1 | sed 's/\(Instance pipe name: np:\)//')
__heidisql --nettype=3 --host="$hostname" --winauth=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多