2012-05-01 17 views
0

組み込みのC#ロールおよびメンバーシップ管理テーブルから自分のカスタムメイドテーブルに情報を引き出すストアドプロシージャに問題があります。このプロシージャは、最後のUpdate文まで機能します。手順は、私は誰もがユニークな識別子に文字列から行くの問題を抱えたことが、狂気私を運転しているものを見つけ、このエラーメッセージで検索すると、私はこのメッセージSQLストアドプロシージャの変換に失敗しました

Conversion failed when converting from a character string to uniqueidentifier. 

の取得失敗

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 

最後のブロックで使用されている唯一の一意の識別子がWHERE句で使用されているということです。前に述べたように、プロシージャは最後の更新時刻まで完全に実行されます。

+0

** SQL =(Microsoft)SQL Server **を使用していますか? SQLは実際には構造化されたクエリ言語であり、データベース製品ではありません。 –

答えて

3

Perspective_Memberを持っています。 :ここで

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 

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

更新:エラーは、PerspectiveMemberID値(INT)がRoleID2列(uniqueidentifier)に挿入されているためです。

+0

興味深いことに、挿入が失敗せず、選択リストの列が多すぎます。 – joshp

+0

明らかに、電子メールフィールドに挿入されています。 – BluesRockAddict

+0

ええ、その部分ははっきりしていますが、選択リスト挿入の列が多すぎると、データの処理を開始する前にエラーがスローされ、変換エラーが見つかるはずです。 – joshp

関連する問題