我正在使用Dapper对来自 ASP.NET MVC 3 (.NET 4.0) 应用程序的 SQL Server 2008 R2 Express 实例执行以下查询。
INSERT INTO Customers (
Type, Name, Address, ContactName,
ContactNumber, ContactEmail, Supplier)
VALUES (
@Type, @Name, @Address, @ContactName,
@ContactNumber, @ContactEmail, @Supplier)
SELECT @@IDENTITY
Run Code Online (Sandbox Code Playgroud)
对 的调用connection.Query<int>(sql, ...)
正在引发无效的强制转换异常。我已经调试了它,它是在 Dapper 调用GetValue
返回的SqlDataReader
.
的返回类型GetValue
是Object
,在调试器中检查它显示它是一个装箱十进制。
如果我将选择更改为SELECT CAST(@@IDENTITY as int)
,则 GetValue 的返回是一个装箱的 int 并且不会引发异常。
Id 列绝对是 int 类型;为什么会SELECT @@IDENTITY
返回一个小数?
一些附加信息:
据我所知,有三种可能的方式来备份您的 SQL Server 数据库
每种策略的优缺点是什么,应该在什么情况下使用?
我正在使用ExpressMaint和 Windows 计划任务来创建一些 MS SQL Server 2008 R2 Express 数据库的每周完整和每日差异备份
每周满额
expressmaint -S (local)\SQLExpress -D ALL -T DB -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU WEEKS -BV 4 -V -C
Run Code Online (Sandbox Code Playgroud)
每日差异
expressmain -S (local)\SQLExpress -D ALL -T DIF -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU days -BV 7 -V -C
Run Code Online (Sandbox Code Playgroud)
当我将这些恢复到某个点时,我必须单独恢复每个备份。有没有什么办法可以连锁的一系列备份到一个单独的恢复将重新发挥正确的顺序?
当我尝试这个时,我收到错误
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
附加信息:
加载在“C:\Foo\Bar_FullBackup_20110130_2346.bak”上的媒体被格式化为支持 1 个媒体系列,但根据备份设备规范预计有 2 个媒体系列。RESTORE HEADERONLY 异常终止。(Microsoft SQL Server,错误:3231)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=3231&LinkId=20476
编辑
当您右键单击数据库时,我正在使用任务菜单中的还原对话框。从那里,我选择“从设备恢复”并添加我希望从中恢复的 .bak …
我有一张桌子,里面放着两种类型的笔记。提货单和交货单。它们是相同的数据结构,因此使用相同的表。
CREATE TABLE Notes (
Id int IDENTITY(1,1) NOT NULL,
Type int NOT NULL,
CustomerId int NOT NULL,
-- etc
)
Run Code Online (Sandbox Code Playgroud)
我正在将数据从旧系统迁移到此表中,并且要求收款和交付票据具有自己的序列号。
我之前已经实现了两个序列表
CREATE TABLE CollectionNoteSequence (
Id int IDENTITY(1,1) NOT NULL,
NoteId int NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
其中该Id
列是收藏笔记的唯一顺序 ID,然后是 NoteId 外键的 to Notes.Id
。
现在是进行最终(真实)数据迁移的时候了,而且这种设置似乎很难使用。
有没有办法可以将两个序列表合并并NoteNo
在 Notes 表中添加一个字段,以便NoteNo
根据Note.Type
? 这是复合键还是什么?
新表可能看起来像
CREATE TABLE Notes (
Id int IDENTITY(1,1) NOT NULL,
NoteNo int NOT NULL,
Type int NOT NULL,
CustomerId int NOT NULL,
-- …
Run Code Online (Sandbox Code Playgroud)