如何从asp页面访问sql server

时间:2009-02-17 18:35:45

标签: sql sql-server asp-classic ado

我们有一个遗留的,自行开发的时间表系统(ASP,microsoft sql server 2005),我需要克隆到另一台计算机进行备份。 (我对这些东西知之甚少,所以请求温柔)

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

这是它崩溃的线:conn.open Session(“sConnStr”)

这是连接字符串;

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

这是错误:

  

错误类型:用于ODBC驱动程序的Microsoft OLE DB提供程序(0x80004005)[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序/mydir/mypage.asp,第17行&lt; ==显示在上面< / p>

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

问题:

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

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

  1. Enable SQL Authentication

      

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

         

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

         

    SQL Server 2005:

         

    转到开始&gt;节目&gt;

  2. And this;

      

    将所有者更改为用于访问db

    的所有者      

    Microsoft SQL Server Management Studio

         

    右键单击数据库,更改所有者

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

6 个答案:

答案 0 :(得分:1)

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

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

然后,您将希望通过创建新的数据库用户

将该登录名分配给数据库
  
      
  1. 在SQL Server Management Studio中,打开对象资源管理器并展开   数据库文件夹。
  2.   
  3. 展开用于创建新数据库用户的数据库。
  4.   
  5. 右键单击“安全性”文件夹,指向“新建”,然后单击“用户”。
  6.   
  7. 在“常规”页面上,在“用户名”框中输入新用户的名称。
  8.   
  9. 在“登录名”框中,输入要映射到的SQL Server登录名   数据库用户。
  10.   
  11. 单击“确定”。
  12.   

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

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

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

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

答案 1 :(得分:1)

如果您的登录信任连接是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”条目应该是您在“数据库”下看到的数据库的确切名称。确保您的“服务器”也正确无误。

答案 2 :(得分:0)

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

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

这通常发生在以下某种情况中:

* 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”的数据库。

答案 3 :(得分:0)

如果这是SQL服务器,则此连接字符串 应该与ASP一起正常工作。在显然使用之前替换您的值。

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我建议你创建一个可以为你做所有连接的DAL(数据访问层)。只要通过你的命令,一个dit可以打开和关闭你的conenctions等。在任何应用程序中,您都要尽可能多地抽象这些不同的层,这意味着当具有dal处理的方法并使数据库调用时,您的aspx页面应该调用一个对象。

以下是连接数据库的格式。您可以将connecitn字符串放在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"/>
像这样的loks背后的代码:

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