It appeared that Tdar was using the querystring to pass the variables.
I am having a similar problem but in my case I am using an SqlDataSource.
I have 3 GUIDs and only one of them is described as a uniqueidentifier type
in the code that is being sent to the SQLserver.
If I profile the Update string it ends up looking like the following:
Note that I added the Casts in there because I was getting the conversion
error.
exec sp_executesql N'UPDATE Record SET Approved = @Approved, ReviewedBy =
CAST(@ReviewedBy AS uniqueidentifier), DataOriginationDate =
@DataOriginationDate WHERE (CaseGUID = CAST(@original_CaseGUID AS
uniqueidentifier)) AND (Approved = @original_Approved) AND (ReviewedBy =
CAST(@original_ReviewedBy AS uniqueidentifier)) AND (Creator =
CAST(@original_Creator AS uniqueidentifier)) AND (CreationDate =
@original_CreationDate) AND (DataOriginationDate =
@original_DataOriginationDate)',
N'@Approved bit,@ReviewedBy nvarchar(36),@DataOriginationDate
nvarchar(9),@original_CaseGUID uniqueidentifier,@original_Approved
bit,@original_ReviewedBy nvarchar(36),@original_Creator
nvarchar(36),@original_CreationDate datetime,@original_DataOriginationDate
nvarchar(4000),@Creator nvarchar(36)', @Approved = 1, @ReviewedBy =
N'dde05039-9011-4a9b-a3b2-c19a21f5bd18', @DataOriginationDate = N'9/20/2006',
@original_CaseGUID = '8BC71CED-F365-4AB1-AFE1-F2316578B2CC',
@original_Approved = 1, @original_ReviewedBy =
N'dde05039-9011-4a9b-a3b2-c19a21f5bd18', @original_Creator =
N'90d9dfe7-b2ed-4146-ad0b-62be60ff627e', @original_CreationDate = NULL,
@original_DataOriginationDate = NULL, @Creator =
N'90d9dfe7-b2ed-4146-ad0b-62be60ff627e'
The second parameter string of the sp_executesql call shows that most of the
GUIDs are declared as nvarchar(36), whereas; original_caseGUID is declared
correctly as uniqueidentifier.
I have declared the GUID parameters in the aspx page without the TYPE= as
many folks seem to say works. And that does seem to work for various
situations but doesn't seem to work for the SQLdatasource.
Is there a way to get at what SQLdatasource is using to determine the Type
when generating the exec string?
HERE is my aspx params etc.
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$
ConnectionStrings:ISOLSConnectionString %>" DeleteCommand="DELETE FROM
[Record] WHERE [CaseGUID] = @original_CaseGUID AND [Approved] =
@original_Approved AND [ReviewedBy] = @original_ReviewedBy AND [Creator] =
@original_Creator AND [CreationDate] = @original_CreationDate AND
[DataOriginationDate] = @original_DataOriginationDate"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT Approved, ReviewedBy, Creator, CreationDate,
DataOriginationDate, CaseGUID FROM Record WHERE (CaseGUID = @CaseGUID)"
UpdateCommand="UPDATE Record SET Approved = @Approved,
ReviewedBy = CAST(@ReviewedBy AS uniqueidentifier), DataOriginationDate =
@DataOriginationDate WHERE (CaseGUID = CAST(@original_CaseGUID AS
uniqueidentifier)) AND (Approved = @original_Approved) AND (ReviewedBy =
CAST(@original_ReviewedBy AS uniqueidentifier)) AND (Creator =
CAST(@original_Creator AS uniqueidentifier)) AND (CreationDate =
@original_CreationDate) AND (DataOriginationDate =
@original_DataOriginationDate)">
<DeleteParameters>
<asp:Parameter Name="original_CaseGUID" />
<asp:Parameter Name="original_Approved"
Type="Boolean" />
<asp:Parameter Name="original_ReviewedBy" />
<asp:Parameter Name="original_Creator" />
<asp:Parameter Name="original_CreationDate"
Type="DateTime" />
<asp:Parameter Name="original_DataOriginationDate" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Approved" Type="Boolean" />
<asp:Parameter Name="ReviewedBy" />
<asp:Parameter Name="DataOriginationDate" />
<asp:Parameter Name="original_CaseGUID" />
<asp:Parameter Name="original_Approved"
Type="Boolean" />
<asp:Parameter Name="original_ReviewedBy" />
<asp:Parameter Name="original_Creator" />
<asp:Parameter Name="original_CreationDate"
Type="DateTime" />
<asp:Parameter Name="original_DataOriginationDate" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1"
DefaultValue="{771DD329-1A00-4078-AD23-048C7D2E575F}"
Name="CaseGUID" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
[quoted text, click to view] "Steven Cheng[MSFT]" wrote:
> Hi Tdar,
>
> Does my further suggestion helps? If you're still meeting any problem,
> please feel free to post here.
>
> Regards,
>
> Steven Cheng
> Microsoft Online Support
>
> Get Secure!
www.microsoft.com/security > (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
>