【问题标题】:Automate db connection for a Visual Studio sql document自动化 Visual Studio sql 文档的数据库连接
【发布时间】:2016-05-16 09:00:22
【问题描述】:

当你在 VS 的 Transact-SQL 编辑器中编辑一个 sql 文件时,你可以按下连接按钮来弹出一个 db 连接对话框。如何从 VS 扩展自动执行此操作?我可以捕捉到 fileOpen 事件没问题。有谁知道连接命令隐藏在 DTE 中的哪个位置?不仅仅是弹出对话框,而是一个接受连接字符串并连接编辑器窗口的方法。

更新

我已经列出了我所有的 VS 命令。与连接按钮对应的是“SQL.TSqlEditorConnect”。我似乎无法在没有无限循环的情况下调用它,我怀疑这只是打开对话框的命令,而不是创建连接。

【问题讨论】:

    标签: visual-studio envdte


    【解决方案1】:

    按如下方式使用“sqlcmd”:

    sqlcmd -S <ComputerName>\<InstanceName> -i C:\Temp\ClearTables.sql
    

    如所见:Executing set of SQL queries using batch file?

    编辑:: 你试过了吗:

    OPEN DATABASE [FileName | ?] [EXCLUSIVE | SHARED] [NOUPDATE] [VALIDATE]

    如此处所示 -> https://msdn.microsoft.com/en-us/library/w01w7w4c%28v=vs.80%29.aspx

    **第二次编辑:: ** 你试过 SSH 吗?

    【讨论】:

    • 抱歉,我可能不清楚。我不想自动运行 sql。我想自动连接编辑器窗口。在我的 VS 扩展中,我想调用一些 envdte 方法,提供一个连接字符串,这将使编辑器窗口处于连接状态。
    • 第二个建议似乎是一个可视的 foxpro 命令?我不认为我们越来越近了。
    【解决方案2】:

    感谢 MS 的 SSDT 团队的 Kevin Cunnane,答案是名为 ISqlServerObjectExplorerService 的服务。这有一个接受连接字符串的 OpenQuery 方法。

    这可通过标准 VS 可扩展性模型获得(在您的包中,调用 GetService 或 GetGlobalService,引用此服务)。

    ISqlServerObjectExplorerService service = DataPackage.Instance.GetService<ISqlServerObjectExplorerService>(typeof(ISqlServerObjectExplorerService));
    if (service != null)
    {
        service.OpenQuery(new SqlConnectionStringBuilder(myConnectionString));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多