为应用程序设置 ASP.NET 成员资格提供程序

为应用程序设置 ASP.NET 成员资格提供程序

我最近下载了 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 权限。

相关内容