如果我只是用我的查询包装:
BEGIN TRANSACTION
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
如果内部有任何失败,它会自动回滚吗?
从查看其他代码,他们似乎检查错误,如果有错误,然后他们执行GOTO语句,然后调用ROLLBACK TRANSACTION
但这似乎是分配工作,必须在每次插入/更新后检查IF(@@ ERROR <> 0).
我有一个带有这些字段的表的SQL Server数据库:
bit的默认值为1 , NOT NULL.smalldatetime具有默认值gettime(),NOT NULL.int没有默认值,IDENTITY,NOT NULL.当我为此表生成Linq to SQL时,会发生以下情况:
bit没有给出特殊处理.smalldatetime没有给出特殊处理.int被标记为IsDbGenerated.这意味着当我使用Linq to SQL进行插入时,将发生以下情况:
bit将被发送为0,覆盖默认值.对?smalldatetime将被作为一个未初始化的System.DateTime,生产在SQL服务器错误,因为它不与SQL Server的SMALLDATETIME范围不同.对?IsDbGenerated int不会被发送; DB将生成一个Linq to SQL将读回的值.我必须做出哪些更改才能使此方案有效?
总结一下:我想要具有DB分配的默认值的非可空字段,但是IsDbGenerated如果它意味着在使用Linq to SQL进行更新或插入时我无法为它们提供值,则我不需要它们.IsDbGenerated如果这意味着我必须手动修改Linq生成的代码到SQL,我也不想要它们.
编辑:答案似乎是这是当前Linq to SQL的限制.
我想调用一系列.sql脚本来创建初始数据库结构
有没有办法在没有sqlcmd或存储过程或任何其他类型的代码不是sql的情况下执行此操作?就在一个.sql文件里面.
我正在尝试确定如何使用Visual Studio 2008打开/编辑现有SQL Server Reporting Services(SSRS)2005报表项目(.rptproj)和报表(.rdl),而无需安装SQL Business Intelligence Development Studio(BIDS)2005 .
sql-server-2005 report visual-studio-2008 reporting-services
是否可以将SQL Server 2005数据库的备份还原到SQL Server 2008的实例上?
我需要重建服务器,因为它变得相当苛刻,所以我打算借此机会升级到SQL 2008,并想知道我是否能够恢复备份.
我有一个ASP.NET MVC视图,其中包含用户定义类别的复选框.
<td><% foreach (Category c in (List<Category>)ViewData["cats"]) {
if (selCats.ContainsKey(c.ID)) { %>
<input name="CategoryIDs" type="checkbox" value="<%=c.ID %>" checked="checked" /> <%= c.Name%><% }
else { %>
<input name="CategoryIDs" type="checkbox" value="<%=c.ID %>" /> <%= c.Name%> <% } %>
<% } %>
</td>
Run Code Online (Sandbox Code Playgroud)
表单将发布到以下控制器操作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, int [] CategoryIDs)
{
PostsDataContext db = new PostsDataContext();
var post = db.Posts.Single(p => p.ID == id);
UpdateModel(post, new[] { "Title", "Subtitle", "RawContent", "PublishDate", "Slug" });
db.SubmitChanges();
return Redirect("/archives/" + post.Slug);
}
Run Code Online (Sandbox Code Playgroud)
表单复选框将转换为整数ID"CategoryID"的数组,每个ID表示一个选定的类别.然后我想把它们放到一个包含两列的关联表中:PostID和CategoryID.这用于在帖子和类别之间建立多对多关联.
目前我正在强制它:循环遍历类别,并为每个类别添加一行到包含类别ID的关联表,以及它所属的帖子的ID.
但我想知道在ASP.NET …
绝大多数应用程序无法正确处理"磁盘已满"方案.
示例:安装程序没有看到磁盘已满,忽略所有错误,最后愉快地宣布"安装完成!",或者电子邮件程序不知道它刚下载的消息无法保存,并告诉服务器删除原始.
有什么技术可以优雅地处理这种情况?你用它们吗?你测试它们吗?
情景
某些SQL代理作业计划在一天中每隔几分钟运行一次.
在合法的时间里,它会错过下一个时间表,因为它仍然按照之前的时间表运行.
每隔一段时间,一份工作可能会"挂起".这不会导致失败(因为作业尚未停止).发生这种情况时,可以手动停止作业,并在下次运行时正常工作.它的设计目的是从它停止的地方回来.
什么是最有效的方式......?
我想要一种方法来确定名为"JobX"的SQL代理作业当前正在运行多长时间(以秒为单位).如果它当前没有运行,我们可以返回零.
这样,如果工作已经超过某个阈值的时间,我可以停止工作.
我认为xp_sqlagent_enum_jobs和sysjobhistory的组合可以使用,但我是否有更好的解决方案在那里好奇...并希望能够从其余的你已经运行到和周围工作的障碍受益.
如果我有LINQ对象:
public class SampleDataContext : DataContext {
public Table<Customer> Customers { get { return this.GetTable<Customer>(); } }
public SampleDataContext( string connectionString ) : base( connectionString ) { }
}
[Table( Name="dbo.tblCustomers" )]
public class Customer {
private Guid? customerID;
[Column( Storage="customerID", DbType="uniqueidentifier NOT NULL", IsPrimaryKey=true )]
public Guid? CustomerID {
get { return this.customerID; }
set { this.customerID = value; }
}
private string customerName;
[Column( Storage = "customerName", DbType = "nvarchar(255) NOT NULL" )]
public string CustomerName {
get …Run Code Online (Sandbox Code Playgroud) 我运行(目前正在全面检修)一个处理影院的网站(njtheater.com,如果你有兴趣的话).
当我从数据库中查询播放列表时,我希望"威尼斯商人"在"M"下排序.当然,当我显示剧本名称时,我需要前面的"The".
设计数据库来处理这个问题的最佳方法是什么?
(我正在使用MS-SQL 2000)
sql-server ×5
linq-to-sql ×3
.net ×2
sql ×2
asp.net-mvc ×1
backup ×1
c# ×1
c#-3.0 ×1
datacontext ×1
diskspace ×1
forms ×1
linq ×1
report ×1
transactions ×1