【问题标题】:how to access sql server from asp page如何从asp页面访问sql server
【发布时间】:2018-07-23 20:50:07
【问题描述】:

我们有一个传统的本土时间表系统(ASP,microsoft sql server 2005),我需要将其克隆到另一台计算机以进行备份。 (我对这东西知之甚少,所以请温柔)

我已经完成了大部分工作(IIS、Sql Server、表导入/创建)。但是,访问时间表页面的 ASP 页面在访问 sql 服务器时阻塞。

这是它崩溃的行:conn.open Session("sConnStr")

这是连接字符串;

sConnStr = "Server=MYSERVER-D01;DATABASE=MYDATABASE;UID=MyDatabaseUser;PWD=MyDatabaseUser;QuotedID=No;DRIVER={SQL Server};Provider=MSDASQL"

这是错误:

错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified /mydir/mypage.asp, line 17

请注意,可以使用 Server Management Studio 将 Windows 指定为身份验证来访问 SQL Server 上的数据库。但是,当我尝试使用 SQL 身份验证时,我收到消息“用户未与受信任的 SQL 连接关联”。

问题:

  • 如何在 SQL Server 2005 上设置用户/密码?
  • 什么是默认驱动程序,我需要获取/设置它吗?
  • 当它谈到数据源名称时(参见“MYDATABASE”中的 上面提到的连接字符串),它是在谈论其中一个 您在管理工作室对象的“数据库”下看到的条目 探险家?

感谢您的回复!到目前为止,没有运气。通过这样做,我设法通过管理工作室对象资源管理器访问数据库;

  1. Enable SQL Authentication:

    ....解决方案 要解决此问题,请按照说明设置用户身份验证。 SQL Server 2000:

    转到开始 > 程序 > Microsoft SQL Server > 企业管理器 右键单击服务器名称,选择属性 > 安全 在身份验证下,选择 SQL Server 和 Windows 必须先停止并重新启动服务器才能生效

    SQL Server 2005:

    转到开始 > 程序 > Microsoft SQL Server 2005 > SQL Server Management Studio 右键单击服务器名称,选择属性 > 安全 在服务器身份验证下,选择 SQL Server 和 Windows 身份验证模式 必须先停止并重新启动服务器才能生效..."

  2. And this;

    将所有者更改为用于访问数据库的所有者

    Microsoft SQL Server 管理工作室

    右键数据库,更改所有者

但我仍然收到完全相同的错误消息!

【问题讨论】:

    标签: sql sql-server asp-classic ado


    【解决方案1】:

    要创建新用户并将其分配给数据库,您需要执行以下操作,

    1. 在 SQL Server Management Studio 中,打开对象资源管理器并展开 服务器实例的文件夹,其中 创建新的登录名。
    2. 右键单击安全文件夹,指向新建,然后单击登录。
    3. 在“常规”页面上,在登录名中输入新登录名 盒子。
    4. 选择 SQL Server 身份验证。 Windows 身份验证更重要 安全选项。
    5. 输入登录密码。
    6. 选择应该应用于新的密码策略选项 登录。一般来说,强制密码 政策是更安全的选择。
    7. 点击确定。

    然后,您将希望通过创建新的数据库用户将该登录名分配给数据库,

    1. 在 SQL Server Management Studio 中,打开对象资源管理器并展开 数据库文件夹。
    2. 扩展要在其中创建新数据库用户的数据库。
    3. 右键单击安全文件夹,指向新建,然后单击用户。
    4. 在“常规”页面的“用户名”框中输入新用户的名称。
    5. 在“登录名”框中,输入要映射到的 SQL Server 登录名 数据库用户。
    6. 点击确定。

    您需要将该用户设为 db_owner。对您的数据库运行以下命令。

    sp_addrolemember @rolename = 'db_owner', @membername = 'usernamehere'
    

    然后使用下面的连接字符串格式连接数据库。

    Data Source=ServerAddress;Initial Catalog=DatabaseName;User Id=UserName;Password=UserPassword;
    

    【讨论】:

      【解决方案2】:

      如果您有一个来自 IIS 正在使用运行 SQL Server 的机器的登录的受信任连接,我会避免使用用户名/密码,并在您的连接字符串中声明该连接是受信任的:

      sConnStr = "Server=MYSERVER-D01;DATABASE=MYDATABASE;UID=MyDatabaseUser;PWD=MyDatabaseUser;QuotedID=No;DRIVER={SQL Server};Provider=MSDASQL;集成安全=SSPI"

      这是为了说明更改,但实际上您可能需要稍微改变连接字符串,请查看 http://www.connectionstrings.com/sql-server-2005 示例。

      当它谈到数据源名称时(参见上述连接字符串中的“MYDATABASE”),它是在谈论您在管理工作室对象资源管理器的“数据库”下看到的条目之一

      是的,您输入的“MYDATABASE”应该是您在“Databases”下看到的数据库的确切名称。确保您的“服务器”也正确。

      【讨论】:

        【解决方案3】:
        Microsoft OLE DB Provider for ODBC Drivers error '80004005' 
        

        [Microsoft][ODBC Driver Manager]未找到数据源名称且未指定默认驱动程序。

        这通常发生在以下情况之一:

        * you referenced your connection incorrectly (e.g. spelled the DSN name, or one of the DSN-less string components wrong);
        * you referenced a DSN that doesn't exist;
        * the user connecting to the DSN or DSN-less connection doesn't have access to the information stored in the registry (see KB #306345);
        * you used an English or localized driver detail for your connection string when your system is not set up in that language (see KB #174655); or,
        * you are missing the connection string entirely (this can happen if you maintain your connection string in a session variable, and your sessions aren't working; see Article #2157).
        

        这是上述文章的链接(注意它非常详细)。 link

        为了回答最后一个问题,MYDATABASE 按名称调用数据库。如果在字符串中使用“MYDATABASE”,则需要在 SQL Server 中使用名为“MYDATABASE”的数据库。

        【讨论】:

          【解决方案4】:

          如果这是一个 SQL 服务器,这个连接字符串应该在 ASP 中可以正常工作。在明显使用之前替换你的值。

          sConnStr = "provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDBName;UID=YourUserName;PWD=YourUserPWD;"
          

          【讨论】:

            【解决方案5】:

            我发现处理这些问题的最简单方法是创建一个 udl 文件。在您的桌面上创建一个新的文本文件并将其重命名为 filename.udl。双击 udl 文件。单击提供程序选项卡 > 选择 Microsoft OLE DB Provider for SQL Server > 下一步。使用连接选项卡,您应该能够连接到您的数据库。一旦测试连接成功,单击确定。您现在可以在文本编辑器中打开该文件,然后将启动 Provider... 的行复制并粘贴到您的 asp 文件中。你最终应该得到 sConnStr = "Provider..textfromUDLfile"

            MSDN - Creating and Configuring Universal Data Link (.udl) Files

            【讨论】:

              【解决方案6】:

              我建议您创建一个可以为您完成所有连接工作的 DAL(数据访问层)。只需传递您的命令,dit 就可以打开和关闭您的连接等。在任何应用程序中,您都希望尽可能多地抽象这些不同的层,这意味着您的 aspx 页面应该在有由 dal 处理并进行数据库调用的方法时调用一个对象。

              这是连接到数据库的格式。您可以将连接字符串放在 web.config 文件中,甚至可以使用 hte connectionstringbuilder 在代码中完成。

              您还需要确保您的项目包含 system.data.sqlclient 库,否则这将不起作用。

              Web 配置文件中的条目如下所示。

              <add name="ConString" connectionString="Data Source=localhost;Integrated Security=True;Initial Catalog=&quot;DBtouse&quot;;Persist Security Info=True;" providerName="System.Data.SqlClient"/>
              

              <add key="ConString" value="Server=localhost;user=username;password=password;Initial Catalog=MyDBtouse;pooling=false"/>
              

              后面的代码是这样的:

              Dim MyConnection As Data.SqlClient.SqlConnection
              Dim Constring As New SqlClient.SqlConnectionStringBuilder
              Constring.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("ConString")
              Constring.ConnectTimeout = 30
              MyConnection.ConnectionString = Constring.ConnectionString
              MyConnection.Open()
              
              'Execute code here
              
              MyConnection.Close()
              MyConnection = Nothing
              

              【讨论】:

                猜你喜欢
                • 2017-02-04
                • 1970-01-01
                • 1970-01-01
                • 2012-04-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-05-12
                • 2018-04-14
                相关资源
                最近更新 更多