我需要在我的数据库中有一列由数据库计算(行的总和) – (行的总和)。 我使用代码优先模型来创build我的数据库。 这是我的意思: public class Income { [Key] public int UserID { get; set; } public double inSum { get; set; } } public class Outcome { [Key] public int UserID { get; set; } public double outSum { get; set; } } public class FirstTable { [Key] public int UserID { get; […]
我知道这是主观的,但我想知道人们的意见,并希望在deviseSQL Server表结构时可以应用一些最佳实践。 我个人觉得,在一个固定的(最大)长度的varchar上键入一个表是一个禁止的,因为这意味着必须在任何其他使用这个作为外键的表上传播相同的固定长度。 使用一个int ,将避免必须在板上应用相同的长度,这将导致人为错误,即1个表具有varchar (10) ,另一个varchar (20) 。 这听起来像是一个噩梦初步设置,再加上意味着未来维护表是繁琐的。 例如,键入的varchar列突然变成了12个字符而不是10个。现在必须去更新所有其他表,这可能是一个非常艰巨的任务。 我错了吗? 我在这里错过了什么吗? 我想知道别人怎么看这个,如果用主键坚持int是避免维护噩梦的最好方法。
我遇到一个非常混乱的情况,这让我质疑我对SQL Server连接的理解。 SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something 不会给出与以下相同的结果: SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 WHERE t2.f3 > something 可以请人帮忙告诉这两个查询是否应该是相当的? 谢谢
是否可以设置Microsoft SQL Server定期运行存储过程?
当我尝试从本地环境连接生产数据库时出现以下错误。 我之前可以连接生产数据库,但突然间我收到错误信息,有什么想法? 与服务器build立了连接,但在login前握手过程中发生错误。 (提供程序:TCP提供程序,错误:0 – 句柄无效。) 我试图在本地PC上运行asp.net网站,它有生产数据库的连接string,以下是我在本地环境中得到的错误的堆栈跟踪。 D:\ EDrive \ My Website \ MyWebsite \ MyWebsite \ MyWebsiteDAL \ clsForumQuestion.cs中的MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex,Int32 PageSize)中的第821行:CodeConnect.Default.Page_Load(Object sender,EventArgs e) \ EDrive \ My WebSites \ MyWebsite \ MyWebsite \ MyWebsite \ Default.aspx.cs:在System.Web.Util的System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)的第100行。在System.Web.UI.Control.OnLoad(EventArgs e)System.Web.UI.Control.LoadRecursive()在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,对象发件人,EventArgs e)CalliEventHandlerDelegateProxy.Callback布尔includeStagesAfterAsyncPoint) 任何想法可能在这里出了错?
我正在创build一个有可能为空的字段的计算列。 问题是,如果任何这些字段为空,整个计算列将为空。 我从Microsoft文档了解到,这是预期的,可以通过SET CONCAT_NULL_YIELDS_NULL设置closures。 不过,我不想改变这个默认行为,因为我不知道它对SQL Server其他部分的影响。 有没有办法让我只是检查列是否为空,只有在计算列公式中追加其内容,如果它不为空?
任何人都可以告诉我,如果有相当于SCOPE_IDENTITY()使用GUIDs作为SQL Server中的主键? 我不想首先创buildGUID并保存为variables,因为我们使用顺序的GUID作为主键。 任何想法什么是最好的方法来检索最后插入的GUID主键?
我有两个表,其中列[date]是typesDATETIME2(0) 。 我必须比较两个logging只有他们的date部分(日+月+年),丢弃时间部分(小时+分钟+秒)。 我怎样才能做到这一点?
我试图在我维护的Web应用程序中debuggingSQL超时的来源。 我有C#代码的源代码,所以我确切知道哪些代码正在运行。 我已经将应用程序debugging到了执行超时的SQL代码的那一行,然后我观察SQL查询器中运行的查询。 当这个查询从networking执行时,它在30秒后超时。 但是,当我完全按照Profiler中的描述剪切/粘贴查询,并将其放入SSMS并运行时,它几乎立即返回。 我已经跟踪到的问题是在networking连接中将ARITHABORT设置为OFF(也就是说,如果我在SSMS会话中closures了ARITHABORT,它会运行很长时间,如果我将它重新打开,非常快)。 然而,阅读ARITHABORT的描述,它似乎并不适用…我只做一个简单的SELECT,并没有执行任何算术..只是一个单一的内部联接与WHERE条件: 为什么在这种情况下,ARITHABORT OFF会导致这种行为? 有什么办法可以改变从SSMS的连接ARITHABORT设置? 我正在使用SQL Server 2008。
您好,我在MVC4中使用C#插入一些值到SQL表。 其实我想插入值,并返回最后插入logging的“ID”。 我使用下面的代码。 public class MemberBasicData { public int Id { get; set; } public string Mem_NA { get; set; } public string Mem_Occ { get; set; } } 插入时,ID在数据库中自动增加。 public int CreateNewMember(string Mem_NA, string Mem_Occ ) { using (SqlConnection con=new SqlConnection(Config.ConnectionString)) { using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ)",con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); […]