Tag: sql server

C#和SQL Server Management Studio中SQL查询的执行时间差异很大

我有一个简单的SQL查询,从C#运行时需要超过30秒,然后每次超时,而在SQL Server Management Studio上运行时立即成功完成。 在后一种情况下,查询执行计划不会显示任何麻烦,并且通过一些简单的操作可以很好地传播执行时间。 我在查询从C#运行时运行’ EXEC sp_who2 ‘,它被列为占用29,000毫秒的CPU时间,并且没有被任何东西阻止。 我不知道如何开始解决这个问题。 有没有人有一些见解? 查询是: SELECT c.lngId, … FROM tblCase c INNER JOIN tblCaseStatus s ON s.lngId = c.lngId INNER JOIN tblCaseStatusType t ON t.lngId = s.lngId INNER JOIN [Another Database]..tblCompany cm ON cm.lngId = cs.lngCompanyId WHERE t.lngId = 25 AND c.IsDeleted = 0 AND s.lngStatus = 1

连接到sql server数据库mdf文件而不在客户机上安装sql server?

我正在创建一个需要使用sql server数据库的窗口应用程序。 我想将此应用程序安装到客户端计算机而不安装sql server,以便我的应用程序仍然可以连接到数据库,即我将在客户端系统提供的mdf文件。 如何在不安装sql server的情况下通过我的窗口应用程序连接到客户端计算机上的数据库(mdf)。 ? 我不知道是否有可能。 如果可能的话,那种情况下的连接字符串是什么。 数据库不需要在网络中使用。 客户端mahine不需要任何安装。 每件事都需要通过笔式驱动

LINQ查询子句的顺序是否会影响entity framework的性能?

我正在使用Entity Framework(代码优先),并且在我的LINQ查询中查找指定子句的顺序会对性能产生巨大影响,例如: using (var db = new MyDbContext()) { var mySize = “medium”; var myColour = “vermilion”; var list1 = db.Widgets.Where(x => x.Colour == myColour && x.Size == mySize).ToList(); var list2 = db.Widgets.Where(x => x.Size == mySize && x.Colour == myColour).ToList(); } 如果(罕见)颜色子句在(通用)大小子句之前,它的速度很快,但反过来它的速度要慢一些。 该表有几百万行,所讨论的两个字段是nvarchar(50),因此没有标准化,但它们都是索引的。 这些字段以代码优先方式指定,如下所示: [StringLength(50)] public string Colour { get; set; } [StringLength(50)] public […]

entity framework不使用时态表

我正在使用数据库第一entity framework6.在将我的模式中的一些表更改为临时表后,我在尝试插入新数据时开始收到以下错误: Cannot insert an explicit value into a GENERATED ALWAYS column in table ‘.dbo.. Use INSERT with a column list to exclude the GENERATED ALWAYS column, or insert a DEFAULT into GENERATED ALWAYS column. 看起来EF正在尝试更新由系统管理的PERIOD列的值。 从EDMX文件中删除列似乎可以解决问题,但这不是一个可行的解决方案,因为每次从数据库重新生成模型时都会重新添加列。

按组填写缺少的日期

我有一个如下所示的数据集: shop_id,item_id,time,value 150,1,2015-07-10,3 150,1,2015-07-11,5 150,1,2015-07-13,2 150,2,2015-07-10,15 150,2,2015-07-12,12 在每个组中,由“shop_id和”item_id“定义,缺少日期。 我希望将这个不规则的时间序列扩展为每个组内的常规连续日期: shop_id,item_id,time,value 150,1,2015-07-10,3 150,1,2015-07-11,5 150,1,2015-07-12,0 # <~~ added 150,1,2015-07-13,2 150,2,2015-07-10,15 150,2,2015-07-11,0 # <~~ added 150,2,2015-07-12,12 对于添加的日期,相应的值应为零。 我已经阅读了非常类似的问题(使用R或SQL合并),但我见过的大多数解决方案都不涉及GROUP BY。 基本上我可以访问SQL数据库/我可以导出为CSV,最好在C#中进行操作。 希望找到可以进行此类数据操作但无法找到的C#库。 任何建议或帮助表示赞赏!

.NET SqlConnection类,连接池和重新连接逻辑

我们有一些客户端代码,它使用.NET中的SqlConnection类与SQLServer数据库通信。 它会间歇性地失败并出现此错误: “ExecuteReader需要一个开放且可用的连接。连接的当前状态为Closed” “临时”解决方案是重新启动过程,之后一切正常 – 但是,这显然不能令人满意。 代码保留了SqlConnection实例的缓存,每个数据库一个。 我们想重新编写代码,但在此之前,我需要了解一些事情: 我的第一个问题是:重复连接和断开SqlConnection对象是否效率低下,或者底层库是否代表我们执行连接池? // Is this bad/inefficient? for(many-times) { using(SQLConnection conn = new SQLConnection(connectionString)) { // do stuff with conn } } 因为我们的代码没有执行上述操作,所以问题的可能原因似乎是在连接的“生命周期”期间底层SQLServer数据库发生了某些事情,导致连接被关闭… 如果事实certificate“缓存”SqlConnection对象是值得的,那么处理所有可以简单地通过“重新连接”到数据库来解决的错误的建议方法是什么。 我在谈论的场景如下: 数据库脱机并重新联机,但客户端进程在发生这种情况时没有打开的事务 数据库“断开连接”,然后“重新连接” 我注意到SqlConnection上有一个“State”属性…是否有适当的方法来查询? 最后,我有一个测试SQLServer实例设置了完全访问权限:我怎样才能再现确切的错误“ExecuteReader需要一个开放的可用连接。连接的当前状态是关闭的”

INSERT INTO如果不存在SQL服务器

我有一个数据库结构如下: 用户 userid (Primary Key) username 组 groupid (PK) groupName user_groups userid (Foreign Key) groupid (Foreign Key) 用户第一次登录时,我希望将他们的信息添加到users表中。 所以基本上我想要的逻辑是 if (//users table does not contain username) { INSERT INTO users VALUES (username); } 如何使用SQL Server / C#智能地执行此操作?

在ASP.NET C#中将字节流式传输到图像

我有一个存储在我的SQL Server数据库中的图像与我的用户数据一起存储,我一次检索所有这些数据。 现在我在我想要显示的页面上直接使用byte []。 我如何将它放在我的WebControls.Image中? 我不想调用HttpHandler并再次调用数据库。 这显然只是将它输出到整个页面。 Context.Response.BinaryWrite(user.Picture.ToArray());

entity framework4.1自创建数据库以来,创建数据库后立即更改了支持上下文的模型

我正在开发一个项目,它使用Entity Framework 4.1将我们的各种对象持久化到数据库(代码优先)。 我在Visual Studio中使用本地SQL Express DB进行测试,我们的Jenkins服务器将已提交的代码部署到测试服务器。 发生这种情况时,我暂时将本地连接字符串更改为指向测试数据库服务器并运行unit testing以重新创建测试数据库,以使其与我们的最新实体等相匹配。 我最近注意到我们的测试服务器发出了这个错误: 自创建数据库以来,支持’EntityFrameworkUnitOfWork’上下文的模型已更改。 手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。 例如,DropCreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择使用新数据对其进行种子设定。 这通常表明我们的代码已经更改,我需要运行unit testing来重新创建数据库。 除了我刚刚那样做! 我不相信我们的部署过程有任何问题 – 测试服务器上的DLL似乎与我的本地环境中的版本相同。 是否有任何其他设置或环境因素可能导致自创建数据库以来模型发生更改的错误? 我是新来的 – 谢谢你的帮助!

如何在Entity Framework中获取SQL Server序列的下一个值?

我想在Entity Framework中使用SQL Server sequence对象来显示数字序列,然后将其保存到数据库中。 在当前场景中,我正在通过存储过程中的一个增量(存储在一个表中的先前值)并将该值传递给C#代码来执行相关操作。 为了实现这一点,我需要一个表,但现在我想将它转换为一个sequence对象(它会带来什么优势?)。 我知道如何在SQL Server中创建序列并获取下一个值。 但我想知道如何在Entity Framework中获取SQL Server的sequence对象的下一个值? 我无法在SO中的相关问题中找到有用的答案。 提前致谢。