我正在使用脚本每天自动更新数据库,以将Azure Blob存储与可查询的Azure SQL Server数据库同步。在删除和更新记录时,我将插入符合特定条件的全新记录。以下是我目前正在使用的插入语句。
第一条记录被毫无问题地插入到数据库中,但是,第二条记录会抛出错误:
将nvarchar值“〔{“日期”:“2019-06-17”}、{“索引”:“2”}、}“PAN”:“987”}、{“阶段”:“构造”}、<“主要”:“False”}、=“项目ID”:“3484”}转换为int数据类型时,转换失败。
这个专栏
nvarchar
引用被定义为
nvarchar(MAX)
,不是
int
.
数据库架构:
https://gyazo.com/b95367d03e71b6f1138111668bf56e05
创建表。。。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [BlobSync].[BlobInventory]
(
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[AccountName] [nvarchar](max) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[CreationTime] [datetime] NOT NULL,
[LastModified] [datetime] NOT NULL,
[Etag] [nvarchar](max) NULL,
[ContentLength] [bigint] NULL,
[ContentType] [nvarchar](max) NULL,
[ContentEncoding] [nvarchar](max) NULL,
[ContentLanguage] [nvarchar](max) NULL,
[BlobType] [nvarchar](max) NULL,
[AccessTier] [nvarchar](max) NULL,
[Metadata] [nvarchar](max) NULL,
[Deleted] [bit] NULL,
[RemainingRetentionDays] [int] NULL,
[TagCount] [int] NULL,
[Tags] [nvarchar](max) NULL,
[LastUpdatedUTC] [datetime] NULL,
CONSTRAINT [PK_BlobInventory]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
DROP TABLE IF EXISTS #TempTableInsert;
SELECT *
INTO #TempTableInsert
FROM [BlobSync].[BlobInventory]
WHERE [ID] < 0;
INSERT INTO #TempTableInsert (AccountName, Name, CreationTime, LastModified, Etag, ContentLength, ContentType, ContentEncoding, ContentLanguage, BlobType, AccessTier, Metadata, Deleted, RemainingRetentionDays, Tags, TagCount, LastUpdatedUTC)
VALUES
(
'blobstoragename'
, 'project-images/bdb70f3e-8d8b-41f1-b357-66e1792280e9'
, '7/22/2024 2:28:44 PM'
, '7/23/2024 12:53:18 PM'
, '0x8DCAB597AF04A5D'
, 2380580
, 'image/avif'
, null
, null
, 'BlockBlob'
, 'Cool'
, '{"Description":"This is a description.","FileName":"20190611_120704.jpg"}'
, null
, null
, '[{"Date":"2019-06-17"},{"Index":"1"},{"PAN":"23567"},{"Phase":"Design"},{"Primary":"False"},{"Project ID":"3484"}]'
, 6
, null),
('blobstoragename'
, 'project-images/dd7f2b7e-a824-4ab9-992f-4eae791f8bc6'
, '7/22/2024 2:28:44 PM'
, '7/22/2024 2:28:45 PM'
, '0x8DCAA9DA602D97F'
, 1668161
, 'image/avif'
, null
, null
, 'BlockBlob'
, 'Cool'
, '{"Description":"TEST2","FileName":"20190611_120706.jpg"}'
, null
, null
, '[{"Date":"2019-06-17"},{"Index":"2"},{"PAN":"987"},{"Phase":"Construction"},{"Primary":"False"},{"Project ID":"3484"}]'
, 6
, null);
INSERT INTO [BlobSync].[BlobInventory]
SELECT
AccountName, [Name], [CreationTime], [LastModified],
[Etag], [ContentLength], [ContentType], [ContentEncoding],
[ContentLanguage], [BlobType], [AccessTier], [Metadata],
[Deleted], [RemainingRetentionDays], [Tags], [TagCount],
[LastUpdatedUTC]
FROM
#TempTableInsert
WHERE
(#TempTableInsert.[AccountName] + '/' + #TempTableInsert.[Name] NOT IN (SELECT [BlobInventory].[AccountName] + '/' + [BlobInventory].[Name] FROM [BlobSync].[BlobInventory]));
我以前使用过此脚本,没有出现错误,并且它确实有效,但不知为什么,此SQL代码在我的C#脚本中或在我在Contoso中使用时无法工作(第二条记录)。