【问题标题】:Querying for SQL Servers in an Inno-setup project在 Inno-setup 项目中查询 SQL Server
【发布时间】:2010-06-25 06:45:11
【问题描述】:

我正在使用 Inno-setup 创建一个设置。
在安装过程中,必须创建 SQL Server 数据库。我想让用户能够选择现有的 SQL Server 实例(如果存在),必须在其中创建数据库。
所以,我想要在设置中做的是查询网络(和本地计算机)以获取 SQL Server 实例。

此外,当用户选择了一个实例时,我想验证是否存在该实例上具有特定名称的数据库。

有谁知道我该怎么做?或者也许有人可以给我一些好的方向?

【问题讨论】:

    标签: sql-server inno-setup


    【解决方案1】:

    Inno Setup 支持调用外部 DLL 函数,所以你应该编写一个合适的辅助 DLL。托管 .net DLL 只能通过 COM 接口使用,否则您需要非托管 DLL。

    有效的调用约定有:“stdcall”(默认)、“cdecl”、“pascal”和“register”。

    【讨论】:

    • +1,除了 DLL 库,你甚至可以在最新版本的 InnoSetup 中 use COM objects(不知道以前是怎样的)。
    【解决方案2】:

    尝试以下原生 .Net 库调用:

    using System.Data.Sql;
    
    var instance = SqlDataSourceEnumerator.Instance;
    DataTable dataTable = instance.GetDataSources();
    

    生成的数据表包含以下列:

    服务器名称

    服务器名称。

    实例名称

    服务器实例的名称。如果服务器作为默认实例运行,则为空白。

    集群

    表明服务器是否是集群的一部分。

    版本

    服务器版本(SQL Server 2000 为 8.00.x,SQL Server 2005 为 9.00.x)。

    【讨论】:

    • 我可以从 Inno-setup 中调用它吗(它使用一些类似 object-pascal 的语言?)
    • 对不起,我看错了。我以为您正在寻找 .Net 解决方案。
    • 您可以使用任何类型的 Win32 DLL。
    • @splash:这是否包括托管的 .net dll?如果是这样,那么我的原始答案应该可以正常工作,并带回网络上所有可用 SQL 服务器的列表。
    • 托管 .net DLL 只能通过 COM 接口使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多