目前在我们的 SQL Server 2012 数据库中,我们正在使用varchar,我们想改变它nvarchar。我已经生成了一个脚本来做到这一点。
我的问题是 SQL Server 写入varchar列的方式与写入列的方式有什么不同吗?nvarchar列的吗?我们有一些我很关心的后端程序。
编辑:
不确定这是否有帮助,但这些列没有索引、f/k 或约束。
我们有一个(SQL 代理)作业,它每晚备份我们的生产数据库(并恢复到测试数据库服务器),并且我们正在为表中的某些列添加加密。我创建了一个主密钥并将其绑定到服务主密钥:
Create MASTER KEY Encryption By Password = 'MyReallyStrongPW'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY CLOSE MASTER KEY
Run Code Online (Sandbox Code Playgroud)
我还创建了我的证书:
CREATE CERTIFICATE [My_Cert] With Subject = 'My Certificate'
CREATE SYMMETRIC KEY My_Symm_Key WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE [MY_Cert];
Run Code Online (Sandbox Code Playgroud)
同一个账号
域\MyBigSqlAccount
正在运行 sql (prod & test) 的两个实例。
能够看到数据(在测试中)的唯一方法是运行这个:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MyReallyStringPW'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY CLOSE MASTER KEY
Run Code Online (Sandbox Code Playgroud)
然后这将起作用:
OPEN SYMMETRIC KEY My_Symm_Key DECRYPTION BY CERTIFICATE …Run Code Online (Sandbox Code Playgroud) 这适用于 SQL Server 2012。
我们有一些 FTP 文件的导入过程,这些过程被拾取并读入临时表,从那里我们在进入生产之前按摩/检查数据。导致一些问题的领域之一是日期,有些是有效的,有些是错别字,有些只是简单的胡言乱语。
我有以下示例表:
Create Table RawData
(
InsertID int not null,
MangledDateTime1 varchar(10) null,
MangledDateTime2 varchar(10) null,
MangledDateTime3 varchar(10) null
)
Run Code Online (Sandbox Code Playgroud)
我也有一个目标表(比如在生产中)
Create Table FinalData
(
PrimaryKeyID int not null, -- PK constraint here, ident
ForeighKeyID int not null, -- points to InsertID of RawData
ValidDateTime1 SmallDateTime null,
ValidDateTime2 SmallDateTime null,
ValidDateTime3 SmallDateTime null
)
Run Code Online (Sandbox Code Playgroud)
我将以下内容插入到 RawData 表中:
Insert Into RawData(InsertID, MangledDateTime1, MangledDateTime2, MangledDateTime3)
Values(1, '20001010', '20800630', '00000000') -- First is legit, second two are …Run Code Online (Sandbox Code Playgroud)