0

組み込みのC#ロールおよびメンバーシップ管理テーブルから独自のカスタムメイドのテーブルに情報をプルするストアドプロシージャで問題が発生しています。この手順は、最後のUpdateステートメントまで正常に機能します。

ALTER PROCEDURE [dbo].[GetPerpsectiveMemberList]
AS
DECLARE @Members TABLE
(
RowNumber INT,
PerspectiveMemberID INT,
FirstName varchar(MAX),
LastName varchar(MAX),
[Address] varchar(MAX),
City varchar(MAX),
[State] varchar(MAX),
Zip varchar(MAX),
Email varchar(MAX),
ASPMemberID varchar(MAX),
ASPUsername varchar(MAX),
RoleID2 varchar(MAX),
RoleName2 varchar(MAX)
)
INSERT INTO @Members
SELECT ROW_NUMBER() OVER (ORDER BY Perspective_Member.PerspectiveMemberID), PerspectiveMemberID, Perspective_Member.FirstName, Perspective_Member.LastName, 
Perspective_Member.[Address], Perspective_Member.City, Perspective_Member.[State],   Perspective_Member.[State], Perspective_Member.Zip, Perspective_Member.ASPMemberID, 
Perspective_Member.ASPUsername,PerspectiveMemberID, ASPMemberID
FROM Perspective_Member
UPDATE @Members
SET RoleID2 = aspnet_UsersInRoles.RoleId
FROM aspnet_UsersInRoles
WHERE ASPMemberID = UserId
UPDATE @Members
SET RoleName2 = RoleName
FROM aspnet_Roles
WHERE RoleID2 = RoleID
SELECT * FROM @Members

手順が失敗すると、このメッセージが表示されます

Conversion failed when converting from a character string to uniqueidentifier.

このエラーメッセージを検索したところ、文字列から一意の識別子に移行する際に問題が発生していることがわかりましたが、最後のブロックで使用されている唯一の一意の識別子がWHERE句で使用されていることが気になります。先ほど、最後のUPDATE blである限り、プロシージャは完全に実行されると述べました。

4

1 に答える 1

3

Perspective_Member。[State]が2回リストされています。

Perspective_Member.[State],   Perspective_Member.[State]

修正されたINSERTステートメントは次のとおりです。

INSERT INTO @Members
    SELECT ROW_NUMBER() OVER (ORDER BY Perspective_Member.PerspectiveMemberID), 
        PerspectiveMemberID, 
        Perspective_Member.FirstName, 
        Perspective_Member.LastName,
        Perspective_Member.[Address], 
        Perspective_Member.City,
        Perspective_Member.[State], 
        Perspective_Member.Zip,
        Perspective_Member.Email, 
        Perspective_Member.ASPMemberID,
        Perspective_Member.ASPUsername,
        PerspectiveMemberID, 
        ASPMemberID
    FROM Perspective_Member

また、@MembersテーブルのASPMemberIDフィールドとRoleID2フィールドのデータ型をに変更する必要がありますuniqueidentifier

更新:エラーは、PerspectiveMemberID値(INT)がRoleID2列(一意の識別子)に挿入されていることが原因のようです。

于 2012-05-01T04:11:46.657 に答える