Tag: sql server

在Entity Framework Core中建模文件夹结构

我想将分层文件夹结构保存到SQL数据库中。 这堂课是这样的: public class Folder { public Folder() { Children = new List(); } public string Name { get; set; } public int Id { get; set; } public int? ParentId { get; set; } public Folder Parent { get; set; } public ICollection Children { get; set; } } 我正在尝试使用Entity Framework Core映射它: builder.Entity() .HasKey(i […]

表加入Entity Framework的性能问题

加入两个表会导致选择时间从330秒增加到40秒。 将要连接的表仅包含ID和文本。 加入两张桌子时,我没想到选择时间会增加8倍。 我的JOIN有什么问题或者这是正常的SQL Server行为吗? 主表填充了3500万条记录,以查看在达到10 GB的SQL Server Express限制时它的执行情况。 在字段LogTimeStamp和字段LogType上创建了另一个索引。 连接表的内容: var queryList = messages .Join(types, type => type.LogType, typeText => typeText.LogType, (msg, msgType) => new { msg.LogID, msg.LogTimeStamp, msg.LogUser, msg.LogType, msgType.LogTypeName, msg.LogMessage }) .Where(t => System.Data.Entity.DbFunctions.TruncateTime(t.LogTimeStamp) >= fromDate) .Where(t => System.Data.Entity.DbFunctions.TruncateTime(t.LogTimeStamp) t.LogType != 4) .OrderBy(m => m.LogID) .ToList(); 结果SQL SELECT 1 AS [C1], [Extent1].[LogID] […]

检测不可用的池化SqlConnections

当我尝试使用sp_setapprole在SqlConnection上设置应用程序角色时,我有时会在Windows事件日志中收到以下错误… 连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。 不支持此方案。 请参阅联机丛书中的“模拟概述”。) …并在我的应用程序中抛出匹配的exception。 这些是池连接,有一段时间连接池与app角色不兼容 – 事实上,Microsoft的旧建议是禁用连接池 (!!)但是随着sp_unsetapprole的引入,它现在(理论上)可以在将连接返回池之前清理连接。 我相信这些错误发生在(由于未知原因)sp_unsetapprole在连接关闭并返回到连接池之前未在连接上运行时。 然后,当从池返回此连接时,sp_approle注定要失败。 我可以捕获并处理此exception,但我更愿意检测即将发生的故障并完全避免exception(以及事件日志中的消息)。 是否有可能在不引起exception的情况下检测问题? 欢迎提出想法或建议。

在数据库上创建程序集时,部署SQL CLR项目失败

我在服务器上的文件夹中有一个包含3个dll文件的文件夹,用于创建程序集。 我首先尝试了以下代码并得到一个错误,说它无法在服务器上找到system.data.datasetextensions.dll文件,我将dll从我的计算机复制并粘贴到我的clr项目所在的同一文件夹中并尝试再次运行该命令。 Create Assembly OoplesCLR from ‘c:\ooplesclr\OoplesFinanceCLR.dll’ with Permission_set = SAFE GO 将dll从我的计算机复制到服务器文件夹后,我现在收到此错误 Warning: The Microsoft .NET Framework assembly ‘system.data.datasetextensions, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.’ you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your […]

通过按钮单击从Windows窗体应用程序备份SQL Server数据库

我需要通过单击Windows应用程序表单上的按钮来备份数据库。 我正在使用C#在Visual Studio 2012上开发它。 在Windows站点中,我学会了使用Transact SQL进行备份。 我在visual studio中的Transact SQL编辑器中尝试过它。 这是我使用的SQL事务处理: USE TestDB; GO BACKUP DATABASE TestDB TO DISK = ‘E:\aa.Bak’ WITH FORMAT, MEDIANAME = ‘Z_SQLServerBackups’, NAME = ‘Full Backup of AdventureWorks2012′; GO 我想在C#中执行它。 每当我单击备份按钮时,我想创建一个备份文件并替换任何现有的备份文件。 ‘FORMAT’参数是否可以达到此目的? 我可以将参数TO DISK (创建备份文件的位置)设置到外部硬盘或笔式驱动器中的某个位置吗? 我可以恢复数据库如下: private void button4_restore(object sender, EventArgs e) { con.Open(); string str = “USE master;”; string str1= “ALTER […]

池中的连接耗尽

我有一个Web表单应用程序,它将在GridView中显示记录列表,通过选中多个复选框,您可以批量删除记录。 代码本身很简单: protected void btnDelete_Click(object sender, EventArgs e) { int i = 0; try { foreach (GridViewRow row in GridView1.Rows) { CheckBox cb = (CheckBox)row.FindControl(“ID”); if (cb != null && cb.Checked) { int profileID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value); Profile profile = new Profile(profileID); //instantiate profile profile.Delete(); //call delete method i++; } } if (i > 0) { […]

如何在c#中运行sql server中的代码

SqlCommand cmd = new SqlCommand(“select Developer from Stackoverflow where UserID=’786′ and Developer=’Sufiyan'”, con); if (con.State == ConnectionState.Closed) { con.Open(); } SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { string codeSnippet = reader[“CodeSnippet”].ToString(); dynamic script = CSScript.LoadCode(@” using System; using System.Windows.Forms; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; public class RunFromSqlServer { public void RunCode(string developer){” […]

SQL Server截断表 – 删除并重新创建FK约束脚本

我正在编写小应用程序(在c#中),这有助于我在SQL Server 2005/08中截断表。 为了截断表我想我需要这样做: 从表中删除所有FK约束, 截断表格, 重新创建所有以前删除的约束。 有人可以帮我创建这样的脚本,还是指点我可以找到一些线索? 问候

跟踪匿名用户活动

我需要使用启用的Cookie跟踪匿名用户。 基本上,他们会浏览网站,与网站进行互动,我希望在不需要实际注册的情况下为他们提供最佳体验。 稍后,如果他们想要,他们可以注册,他们的网站活动将与他们的新帐户绑定。 像Stackoverflow这样的东西,但不同的是我希望我的大多数用户不会实际注册,但偶尔会回来。 所以,我不想在Users表中创建一堆虚拟记录。 因为我只需要一张桌子,所以我在考虑这样的事情: VoteHistory表 Id TrackingToken VotingData 1 100 … 2 100 … 3 101 … 4 102 … 用户表 Id TrackingToken OtherUsersColumns 1 100 … TrackingTokens表 LastTrackingToken 102 我会增加一个LastTrackingToken整数字段,只需将该值添加到用户cookie并使用它跟踪他的投票活动。 然后,如果他决定注册,我只需将他的cookie TrackingToken值添加到他的用户记录中。 最初我在考虑一个Guid / uniqueidentifier,但由于投票表非常大,我需要查询它,我担心索引uniqueidentifier字段。 所以,问题是(抱歉3个子问题,但它们是如此相关,我认为上下文很重要,所以我不想复制问题和上下文描述): 在性能和索引方面,整数字段是否更好? 请记住,TrackingToken不是主要关键字段! 你有什么其他想法我怎么能完成我概述的场景? 如果我决定使用手动生成整数TrackingTokens,那么可靠地生成/增加一个新的TrackingToken的最佳方法是什么? 假设许多并发用户将访问数据库。

SQLCLR项目中的SqlDecimal问题

使用SqlDecimals时,我有一些意想不到的结果。 最后,当划分2个SqlDecimal时,似乎可以归结为缩放问题。 c#示例代码如下所示: [Microsoft.SqlServer.Server.SqlFunction] [return: SqlFacet(Precision = 38, Scale = 8)] public static SqlDecimal fn_divide([SqlFacet(Precision = 38, Scale = 8)]SqlDecimal x, [SqlFacet(Precision = 38, Scale = 8)]SqlDecimal y) { var r = SqlDecimal.Divide(@x, @y); return r; } SQL测试代码如下所示: DECLARE @x numeric(38, 8), @y numeric(38, 8) SELECT @x = Replicate(‘1’, 28) + ‘.12345678’, @y = ‘0.25896314’ […]