2011-02-03 31 views
2

varchar & VARBINARY(MAX)の値をテーブルに挿入するストアドプロシージャがあります。 varbinary(max)フィールドには、C#byte[]を渡します。また、サイズbyte[]のサイズは80142で、最大制限値はvarbinaryです。ストアドプロシージャはエラーなしで実行されます。しかし、そのテーブルをクエリしようとすると、varbinaryデータ型の空の値が表示されます。SQL Server VARBINARY(MAX)

SQL属

ALTER PROCEDURE [dbo].[Test] 
      -- Add the parameters for the stored procedure here 
      @PNumber varchar(50) 
      ,@Byte varbinary(max) 
     AS 
     BEGIN 
      SET NOCOUNT ON; 

      -- Insert statements for procedure here 
      INSERT INTO [Test].[dbo].[Data] 
        ([PNumber] 
        ,[PByte]) 
      VALUES 
        (@PNumber 
        ,@Byte) 
     END 

C#コード

byte[] theData = doc.GetData(); 

DAL_DataTableAdapters.QueriesTableAdapter qta = new DAL_DataTableAdapters.QueriesTableAdapter(); 

qta.Test("test", theData); 

表構造:

CREATE TABLE [dbo].[Data] 
(
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [PNumber] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [PByte] [varbinary](max) NULL 
) ON [PRIMARY] 
+0

「挿入」を行うために使用しているコードは何ですか? (ストアドプロシージャ定義と 'C#'呼び出しの両方)また、空の値が 'null'または' 0x'であることはどういう意味ですか? –

+0

私が追加したコードをご覧ください。私はちょうどpbytes列の空白行を参照してください – Pinu

+0

データテーブルのCREATEスクリプトを追加してください。 – Lucero

答えて

0

あなたはデータが空であることを判断するにはどうすればよいですか?値がある場合でも、SQL Server Management Studioで長すぎる値(制限がわからない)が表示されないことは確かです。

+0

SSMSは返されたデータを切り捨てますが、表示されないだけではありません。 –

+0

私は今SSMSにアクセスすることができないので、確認できません。私は事実を知っていますが、XMLデータの場合、長すぎると空白として表示されます。 – erikkallen