我们有一个遗留的,自行开发的时间表系统(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 2000:
转到开始&gt;节目&gt; Microsoft SQL Server&gt;企业经理 右键单击“服务器名称”,选择“属性”&gt;安全 在身份验证下,选择SQL Server和Windows 必须先停止并重新启动服务器才能生效
SQL Server 2005:
转到开始&gt;节目&gt;
将所有者更改为用于访问db
的所有者Microsoft SQL Server Management Studio
右键单击数据库,更改所有者
但我仍然收到完全相同的错误消息!
答案 0 :(得分:1)
要创建新用户并将其分配给数据库,您需要执行以下操作,
- 在SQL Server Management Studio中,打开对象资源管理器并展开 服务器实例的文件夹 创建新登录。
- 右键单击“安全性”文件夹,指向“新建”,然后单击“登录”。
- 在“常规”页面上,在“登录名”中输入新登录名 框。
- 选择SQL Server身份验证。 Windows身份验证更多 安全选择。
- 输入登录密码。
- 选择应应用于新密码的密码策略选项 登录。一般来说,执行密码 政策是更安全的选择。
- 单击“确定”。
醇>
然后,您将希望通过创建新的数据库用户
将该登录名分配给数据库
- 在SQL Server Management Studio中,打开对象资源管理器并展开 数据库文件夹。
- 展开用于创建新数据库用户的数据库。
- 右键单击“安全性”文件夹,指向“新建”,然后单击“用户”。
- 在“常规”页面上,在“用户名”框中输入新用户的名称。
- 在“登录名”框中,输入要映射到的SQL Server登录名 数据库用户。
- 单击“确定”。
醇>
您希望将该用户设为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="DBtouse";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