![为应用程序设置 ASP.NET 成员资格提供程序](https://linux22.com/image/485474/%E4%B8%BA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%AE%BE%E7%BD%AE%20ASP.NET%20%E6%88%90%E5%91%98%E8%B5%84%E6%A0%BC%E6%8F%90%E4%BE%9B%E7%A8%8B%E5%BA%8F.png)
我最近下载了 DotWiki,打算将其用作我公司网站的支持部分。该应用程序本身有两种不同的安全模式:“简单”和“完整”。完整模式使用 ASP.NET 成员资格提供程序来确保安全。但是,当我运行以下命令时(当然,用正确的信息替换 [sql server] 等),我得到了一个相当大的错误。
aspnet_regsql -S [my computer name]\[sql server] -E -A all -d DotWiki
当我运行该程序时出现以下错误。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql -S AGQAOFFICE\SQLSER VER05 -E -A 全部 -d DotWiki 开始添加以下功能: 会员资格 轮廓 角色管理器 个性化 事件提供者 。 执行 SQL 文件“InstallMembership.sql”期间发生错误。 SQL 错误号为 290,SqlException 消息为:无效的 EXECUTE 状态 使用对象“Relation”、方法“SetUseVarDecimal”进行设置。 SQL 服务器:[我的计算机名称]\[sql 服务器] 数据库:[DotWiki] 已加载的 SQL 文件: 安装会员信息.sql 命令失败: /********************************************************************/ /********************************************************************/ /********************************************************************/ 声明@ver int 声明@version nchar(100) 声明@dot int 声明@hyphen int 声明@SqlToExec nchar(400) 选择@ver = 8 选择@version = @@Version 选择@hyphen = CHARINDEX(N' - ',@version) 如果 (NOT(@hyphen IS NULL) 并且 @hyphen > 0) 开始 选择@hyphen = @hyphen + 3 选择@dot = CHARINDEX(N'.',@version,@hyphen) 如果 (NOT(@dot IS NULL) 并且 @dot > @hyphen) 开始 选择@version = SUBSTRING(@version,@hyphen,@dot-@hyphen) 选择@ver = CONVERT(int,@version) 结尾 结尾 /********************************************************************/ 如果 (@ver >= 8) EXEC sp_tableoption N'aspnet_Membership','行中的文本',3000 /********************************************************************/ /********************************************************************/ 如果存在(选择名称 来自系统对象 其中(名称 = N'aspnet_Membership_CreateUser') 并且(类型 = 'P'))) 删除过程 dbo.aspnet_Membership_CreateUser SQL 异常: System.Data.SqlClient.SqlException:使用对象“Rela tion”,方法“SetUseVarDecimal”。 在 System.Data.SqlClient.SqlConnection.OnError (SqlException 异常,Boolea n 断开连接) 在 System.Data.SqlClient.SqlInternalConnection.OnError (SqlException 异常 ,布尔值 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObj 等状态对象) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cm dHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、Tds 解析器状态对象 stateObj) 在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (字符串方法名称, 布尔异步) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult res ult,字符串方法名称,布尔值sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 System.Web.Management.SqlServices.ExecuteFile (字符串文件,字符串服务器, 字符串数据库,字符串 dbFileName,SqlConnection 连接,布尔值 sessionSta te,布尔值isInstall,SessionStateType sessionStatetype)
任何帮助,将不胜感激 :)
答案1
首先,请按照 splattne 的建议安装最新的服务包,因为您提到的 @@version 不是 sp2。请参阅http://www.krell-software.com/mssql-builds.asp
其次,您也可以直接安装所需的表、存储过程和视图。您可以在此处找到要在 SQL 服务器中运行的脚本:%WINDOWS%\Microsoft.NET\Framework\v2.0.50727\
请参阅此页面了解更多信息:http://aspnet.4guysfromrolla.com/articles/040506-1.aspx
答案2
您在 SQL Server 2005 上安装了哪个 Service Pack?似乎已通过 SP2 解决了该问题(最后一个是 Service Pack 3)。
答案3
因此,实际出现错误的行将是这样的:
EXEC sp_tableoption N'aspnet_Membership', 'text in row', 3000
使用对象“Relation”、方法“SetUseVarDecimal”的 EXECUTE 语句无效
我得到了很多不同的结果,更新到 Service Pack 2(我已经有了)。还有一些人说这是权限问题。似乎什么都不起作用。
答案4
您的数据库是否在 SQL2005 的正确兼容模式下运行?应该是 90。另外,请确保您对 Relation 表具有 ALTER 权限。