我删除 asp_net 的时候
DELETE FROM dbo.aspnet_Users WHERE  UserId = '2bbdb568-070a-4762-bba8-f476d9e5c64a'
出现

消息 1934,级别 16,状态 1,第 1 行
DELETE 失败,因为下列 SET 选项的设置不正确: 'QUOTED_IDENTIFIER'。请确保 SET 选项正确无误,可以用于 计算列上的索引视图和/或索引和/或筛选的索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。。

 这样的错误...
要怎样做。。到网上查。但是看到一塌糊涂..

解决方案 »

  1.   

    aspnet_Users是視圖嗎?
    不是的話,再看看這個玩藝上面有是不是有什麽觸發器
      

  2.   

    SET QUOTED_IDENTIFIER OFF
    GO
      

  3.   

    SET QUOTED_IDENTIFIER OFF 
    这个也没用
      

  4.   


    declare @DeletedUser int 
    exec aspnet_Users_DeleteUser '网','2bbdb178-070a-4762-bba8-f476d9e5c64a'
    ,4,@DeletedUser output
     DELETE FROM dbo.aspnet_Users WHERE  UserId = '2bbdb568-070a-4762-bba8-f476d9e5c64a'
     
     
     SET QUOTED_IDENTIFIER on  --这句运行了之后
    -- DELETE FROM dbo.aspnet_Users WHERE  UserId = '2bbdb568-070a-4762-bba8-f476d9e5c64a'这个是可以执行的。。
    但是运行
    --declare @DeletedUser int 
    exec aspnet_Users_DeleteUser '网','2bbdb178-070a-4762-bba8-f476d9e5c64a'
    ,4,@DeletedUser output
    就有问题啦。。也是之前那个问题
      

  5.   


    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER on
    GO
    就是这里出错,我之前设置为 SET QUOTED_IDENTIFIER off
      

  6.   


    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER on
    GO
    ALTER PROCEDURE [dbo].[aspnet_Users_DeleteUser]
        @ApplicationName  nvarchar(256),
        @UserName         nvarchar(256),
        @TablesToDeleteFrom int,
        @NumTablesDeletedFrom int OUTPUT
    AS
    BEGIN
        DECLARE @UserId               uniqueidentifier
        SELECT  @UserId               = NULL
        SELECT  @NumTablesDeletedFrom = 0    DECLARE @TranStarted   bit
        SET @TranStarted = 0    IF( @@TRANCOUNT = 0 )
        BEGIN
        BEGIN TRANSACTION
        SET @TranStarted = 1
        END
        ELSE
    SET @TranStarted = 0    DECLARE @ErrorCode   int
        DECLARE @RowCount    int    SET @ErrorCode = 0
        SET @RowCount  = 0    SELECT  @UserId = u.UserId
        FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a
        WHERE   u.LoweredUserName       = LOWER(@UserName)
            AND u.ApplicationId         = a.ApplicationId
            AND LOWER(@ApplicationName) = a.LoweredApplicationName    IF (@UserId IS NULL)
        BEGIN
            GOTO Cleanup
        END    -- Delete from Membership table if (@TablesToDeleteFrom & 1) is set
        IF ((@TablesToDeleteFrom & 1) <> 0 AND
            (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_MembershipUsers') AND (type = 'V'))))
        BEGIN
            DELETE FROM dbo.aspnet_Membership WHERE @UserId = UserId        SELECT @ErrorCode = @@ERROR,
                   @RowCount = @@ROWCOUNT        IF( @ErrorCode <> 0 )
                GOTO Cleanup        IF (@RowCount <> 0)
                SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1
        END    -- Delete from aspnet_UsersInRoles table if (@TablesToDeleteFrom & 2) is set
        IF ((@TablesToDeleteFrom & 2) <> 0  AND
            (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_UsersInRoles') AND (type = 'V'))) )
        BEGIN
            DELETE FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId        SELECT @ErrorCode = @@ERROR,
                    @RowCount = @@ROWCOUNT        IF( @ErrorCode <> 0 )
                GOTO Cleanup        IF (@RowCount <> 0)
                SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1
        END    -- Delete from aspnet_Profile table if (@TablesToDeleteFrom & 4) is set
        IF ((@TablesToDeleteFrom & 4) <> 0  AND
            (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_Profiles') AND (type = 'V'))) )
        BEGIN
            DELETE FROM dbo.aspnet_Profile WHERE @UserId = UserId        SELECT @ErrorCode = @@ERROR,
                    @RowCount = @@ROWCOUNT        IF( @ErrorCode <> 0 )
                GOTO Cleanup        IF (@RowCount <> 0)
                SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1
        END    -- Delete from aspnet_PersonalizationPerUser table if (@TablesToDeleteFrom & 8) is set
        IF ((@TablesToDeleteFrom & 8) <> 0  AND
            (EXISTS (SELECT name FROM sysobjects WHERE (name = N'vw_aspnet_WebPartState_User') AND (type = 'V'))) )
        BEGIN
            DELETE FROM dbo.aspnet_PersonalizationPerUser WHERE @UserId = UserId        SELECT @ErrorCode = @@ERROR,
                    @RowCount = @@ROWCOUNT        IF( @ErrorCode <> 0 )
                GOTO Cleanup        IF (@RowCount <> 0)
                SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1
        END    -- Delete from aspnet_Users table if (@TablesToDeleteFrom & 1,2,4 & 8) are all set
        IF ((@TablesToDeleteFrom & 1) <> 0 AND
            (@TablesToDeleteFrom & 2) <> 0 AND
            (@TablesToDeleteFrom & 4) <> 0 AND
            (@TablesToDeleteFrom & 8) <> 0 AND
            (EXISTS (SELECT UserId FROM dbo.aspnet_Users WHERE @UserId = UserId)))
        BEGIN
           DELETE FROM [aspnet_Users] WHERE @UserId = UserId         SELECT @ErrorCode = @@ERROR,
                    @RowCount = @@ROWCOUNT        IF( @ErrorCode <> 0 )
                GOTO Cleanup        IF (@RowCount <> 0)
                SELECT  @NumTablesDeletedFrom = @NumTablesDeletedFrom + 1
        END    IF( @TranStarted = 1 )
        BEGIN
        SET @TranStarted = 0
        COMMIT TRANSACTION
        END    RETURN 0Cleanup:
        SET @NumTablesDeletedFrom = 0    IF( @TranStarted = 1 )
        BEGIN
            SET @TranStarted = 0
        ROLLBACK TRANSACTION
        END    RETURN @ErrorCodeEND
    但我看他的存储过程 没有那里 是与 SET QUOTED_IDENTIFIER  有关的。。
    请高手说 这个存储过程 那里与 SET QUOTED_IDENTIFIER  这个有关。我加分
      

  7.   

    網上搜索說當您建立或變更計算資料行索引或索引檢視時,
    SET QUOTED_IDENTIFIER 也必須是 ON。如果 SET QUOTED_IDENTIFIER 是 OFF,含計算資料行索引的資料表或索引檢視之 CREATE、UPDATE、INSERT 和 DELETE 陳述式會失敗。
      

  8.   

    http://technet.microsoft.com/zh-tw/library/ms174393.aspx
    這裡說的,,你看看你存儲過程中有用到沒有嘛
      

  9.   

    11楼的说得很对。。
    但是
    当在计算列或索引视图上创建或更改索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列的索引视图和索引所必需的 SET 选项设置的详细信息,请参阅 SET (Transact-SQL) 中的“使用 SET 语句时的注意事项”。
    请问
    当在计算列或索引视图上创建或更改索引
    是怎样理解。。谢谢
      

  10.   

    呵呵。。他应该说 我在asp_net表里是组成一个视图 的一部分(里面的userid字段)。
    进行删除的时候得把
    SET QUOTED_IDENTIFIER 打开