2

我们有一个传统的本土时间表系统(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. 启用 SQL 身份验证

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

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

    SQL Server 2005:

    转到开始 > 程序 > Microsoft SQL Server 2005 > SQL Server Management Studio 右键单击​​服务器名称,选择属性 > 服务器身份验证下的安全性,选择 SQL Server 和 Windows 身份验证模式服务器必须停止并重新启动,然后才能执行此操作影响...”

  2. 还有这个

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

    Microsoft SQL Server 管理工作室

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

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

4

6 回答 6

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;
于 2009-02-17T18:49:16.513 回答
1

如果您从登录中获得受信任的连接,即 IIS 正在使用运行 SQL Server 的机器,我将避免使用用户名/密码,并在您的连接字符串中声明该连接是受信任的:

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

这是为了说明更改,但在实践中,您可能需要改变连接字符串多一点,请查看http://www.connectionstrings.com/sql-server-2005示例。

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

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

于 2009-02-17T19:34:03.300 回答
0

我建议您创建一个可以为您完成所有连接工作的 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
于 2009-02-17T20:28:28.753 回答
0
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).

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

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

于 2009-02-17T19:02:40.130 回答
0

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

sConnStr = "provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDBName;UID=YourUserName;PWD=YourUserPWD;"
于 2009-02-17T19:16:07.743 回答
0

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

MSDN - 创建和配置通用数据链接 (.udl) 文件

于 2009-02-17T19:56:09.190 回答