SQL Server 2017 安装AdventureWorks示例数据库出现的问题

最近下载最新的SQL Server 2017 试用,并下载安装AdventureWorks示例数据库,不过出现了一些小问题。

如下:

*** Loading Data
Loading [Person].[Address]
消息 4864,级别 16,状态 1,第 1803 行
第 1499 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 1687 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 5167 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 6612 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 7020 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 7028 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 7295 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 7696 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 9639 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 11003 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4864,级别 16,状态 1,第 1803 行
第 14590 行、第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4865,级别 16,状态 1,第 1803 行
由于超过了最大错误数(10),无法进行大容量加载。
消息 7399,级别 16,状态 1,第 1803 行
链接服务器 "(null)" 的 OLE DB 访问接口 "BULK" 报错。提供程序未给出有关错误的任何信息。
消息 7330,级别 16,状态 2,第 1803 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口"BULK"提取行。
 

用notepad++打开Address.csv,下拉至1499行看其内容:

11785 1234, rue Ste-Honor? Saint-Denis 179 93400 E6100000010CE9EC9DA1C96E48405277197595AA0240 {0334F558-C1E9-4E19-8AB0-17E90039B1D5} 2013-12-21 10:09:29.423000000

注意到错误提示第 6 列(PostalCode)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)

再认真看表[Person].[Address]

    [AddressID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL,
    [AddressLine1] [nvarchar](60) NOT NULL, 
    [AddressLine2] [nvarchar](60) NULL, 
    [City] [nvarchar](30) NOT NULL, 
    [StateProvinceID] [int] NOT NULL,
    [PostalCode] [nvarchar](15) NOT NULL, 
   [SpatialLocation] [geography] NULL,
    [rowguid] uniqueidentifier ROWGUIDCOL NOT NULL CONSTRAINT [DF_Address_rowguid] DEFAULT (NEWID()),
    [ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Address_ModifiedDate] DEFAULT (GETDATE())

PostalCode是15个字符,按上面的内容,出现类型不匹配可能是系统读错了数据,对比看后面以E开头的字符可能性大。再细看整行要插入的内容,发现--

“1234, rue Ste-Honor? Saint-Denis”之间只有1个分隔符,变成93400属于第5列,而以E开头的算是第6列,超过了15个字符啦。

再查找整个文件,里面共有16个类似的情况,全部将其变为2个分隔符后保存,再重新加载,正常执行了。


分析:“1234, rue Ste-Honor? Saint-Denis”之间只有1个分隔符,相当于第3列(AddressLine2)本来是无数据的变成插入了[City]列的数据。

这可能是文件编码的问题,因为有问题的行第2列结尾都有“?”字符,在ANSI格式下只看到1个分隔符;而在UTF-8格式下是可以看到2个分隔符的。

你可能感兴趣的:(数据库,SQL,Server)