私は何日もこの質問に対する答えを見つけようとしていますが、それを得ることができないようです.
SQL Server 2012 に保存する必要がある Web サービスから取得した xml 文字列があります。
xml 文字列は最大 100k になる場合があります。
私は次の表を持っています
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TempXML](
[id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[MyXML] [varbinary](max) NOT NULL,
CONSTRAINT [PK_TempXML] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[TempXML] ADD CONSTRAINT [DF_TempXML_id] DEFAULT (newid()) FOR [id]
GO
そして、次のストアドプロシージャ
CREATE PROCEDURE [dbo].[InsertXML]
( @xml xml)
AS
BEGIN
SET NOCOUNT ON;
Insert into TempXML
values(NEWID(), @xml)
END
データサイズが43752文字より大きい場合にsprocを呼び出すと、データが削除され、IDがインストールされます。
一方、フィールドが nvarchar(max) に設定されている場合、文字列全体がドロップされる前にアップロードできる最大値は 65535 文字です
c# メソッドから sproc を呼び出しています
internal static void InsertTempMovie(string xml)
{
{
xmlSouce = xmlSouce.Replace("&", "&");
xmlSouce = xmlSouce.Replace("'", "'");
xmlSouce = xmlSouce.Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "<?xml version=\"1.0\" encoding=\"UTF-16\"?>");
string xmlSouceEncoded = HttpUtility.HtmlDecode(xmlSouce);
LinQTestDataContext dbTempXML = new LinQTestDataContext();
dbTempXML .ExecuteCommand("exec InsertTempXML @xml={0}",xmlSouceEncoded);
}
}
ただし、SQL Server 2012 Management Studio から直接呼び出しても同じ結果が得られます
文字列全体をドロップせずにアップロードできるというアイデアはありますか
前もって感謝します