Articles of sql server

使用sql server express为ac#.net winform应用程序创建多个用户

我在sql server express中有一个sql数据库。 我有一个登录MAINLOGIN,用于此数据库。 我希望通过多个用户U1,U2,U3在这个数据库中插入数据,每个用户都有不同的用户ID和密码。 这些用户将由MAINLOGIN手动或通过winform应用程序创建。 因此,在创建MAINLOGIN时,我会允许他进一步创建登录。 为此,我该怎么办? 我无法创建MULTIPLE用户,因为对于一个数据库,只能在一次登录时创建一个用户。 所以我应该创建多个登录,L1,L2,L3,然后映射,U1,U2,U3到他们。 或者,有更好的方法吗? 像应用程序角色等 我不想使用Windows身份validation。 因为如果我知道系统密码,那么我可以通过应用程序简单地连接sql并插入错误的数据。

Linq-To-SQL多次访问数据库

我试图通过在数据库的一次访问中包含子属性来提高我的Linq-to-SQL查询的效率。 我开始尝试各种linq查询来实现这一目标。 查询变得越来越复杂,所以我尝试了LoadWith()选项: 我的DAL类的构造函数设置LoadWith()设置: public TrackerJobData() { dataLoadOptions = new DataLoadOptions(); dataLoadOptions.LoadWith(x => x.SpecBarcodeRecords); dataLoadOptions.LoadWith(x => x.TrackerJobEquipmentTriggerRecords); dataLoadOptions.LoadWith(x => x.EtaRecord); this.Database.LoadOptions = dataLoadOptions; } 这是我正在使用的查询: public TrackerJob GetItem(int trackerJobId) { TrackerJobRecord record = (from trackerJob in this.Database.TrackerJobRecords where trackerJob.TrackerJobId == trackerJobId select trackerJob).FirstOrDefault(); return record.Map(); } 当我在linq查询 (而不是返回) 上调试和F10 时 ,我在SQL事件探查器中获得此输出: 请原谅我对SQL事件探测器的无知,但是三条突出显示的行是否意味着从客户端(我的代码)到服务器有三次往返? 如果是这样,为什么? SQL Server是否会在一次旅行中执行多个sp_executesql调用? […]

创建应用程序数据的快照 – 最佳实践

我们有一个使用.NET FW 4.0在C#中开发的文本处理应用程序,其中管理员可以定义各种设置。 所有这些“设置”数据都驻留在大约50个具有外键关系和Identity主键的表中(我认为这会使它变得棘手)。 整个数据库不超过100K记录,平均表有大约6个短列。 该系统基于MS SQL 2008 R2 Express数据库。 我们需要创建所有这些数据的快照,以便系统管理员可以随时回滚到其中一个快照。 我们只需要保留最后5个快照。 必须从应用程序GUI开始创建快照,因此必要时必须回滚到任何快照(由于拒绝直接访问数据库,因此不允许使用SSMS)。 系统仍在开发中(我们真的完成了吗?)这意味着新表和列会多次添加。 因此,我们需要一个可以自动处理更改的强大方法(在插入/更改列之后挖掘代码是我们想要避免的,除非没有其他方法)。 最好的方法是告诉“我想创建名称以’Admin’开头的所有表的快照”。 显然,这是一项数据库密集型任务,但由于它仅在紧急情况下使用,这是我不介意的事情。 我也不介意是否发生表锁,因为在创建或回滚快照的过程中,没有人会尝试使用这些表。 问题可分为两部分: 创建快照 回滚到快照 关于问题#1。 我们可能有两种选择: 将数据导出为XML(文件或数据库列) 将SQL中的数据复制到相同或不同的表中(例如,再次使用与前缀为“Backup”的原始表相同的名称创建相同的表结构)。 关于问题#2。 我看到的最大问题是如何将所有数据重新导入到外键关联表中,这些表使用IDENTITY列进行PK生成。 我需要删除所有受影响的表中的所有数据,然后重新导入所有数据,同时暂时放宽FK约束并关闭身份生成。 加载数据后,我应检查FK约束是否仍然正常。 或许我应该找到一种加载表的逻辑方式,以便在加载时可以保留约束检查(因为我们没有无法管理的表数,这可能是一个可行的解决方案)。 当然,出于显而易见的原因,我需要在单个事务中进行所有删除和重新加载。 我怀疑可能没有基于SQL的纯解决方案,尽管SQL CLR可能有助于避免将数据移出SQL Server。 我们面临同样的问题吗? 也许有人成功解决了这样的问题? 我不指望一步一步的指导。 任何有关从何处开始,获取哪些路径(导出到RAW XML或在数据库中保存快照或两者)的帮助,优点/缺点都非常有用。 谢谢你的帮助和时间。 丹尼尔

获取我的应用程序中的打开连接字符串数

我正在使用C#和SQL Server 2008编写应用程序。如何获取尚未关闭的已打开连接数? 此外,如果我打开20分钟超时的连接,并且不关闭它 – 它会在20分钟后关闭吗?

无法附加到SQL Server以调试SQLCLR存储过程

我想在SQL Server中调试SQLCLR存储过程。 我一直在尝试在VS2015社区和最近安装的VS2017社区版本中调试SP,但没有成功。 我很确定问题在于附加到SQL Server,但是我已经完成了我在网上提到的所有内容,但无济于事。 在SQL Server Express LocalDB中创建数据库项目时,一切正常。 如果我更改连接字符串以使用我的Developer Edition SQL Server,那么我会收到错误。 我做了以下事情: 我创建了一个新的数据库。 我是服务器的唯一用户,它驻留在我用于Visual Studio的同一桌面计算机上。 在Visual Studio中,我使用一种简单的方法创建了一个简单的数据库项目,以便将一些文本发送到输出管道。 [Microsoft.SqlServer.Server.SqlProcedure] public static void mytest () { SqlContext.Pipe.Send(“in clr Craig1”); } 我在项目属性中编辑了目标连接字符串以连接到新数据库,并在按下连接按钮时成功建立连接。 连接字符串为我使用Windows身份validation,使用与数据库所有者相同的用户。 我构建并部署了解决方案并检查了SQL对象资源管理器以确保部署了SP。 它是。 我选择了服务器,并使用右键单击选择“允许SQL / CLR调试”。 我再次检查它以确保它实际设置。 我选择了存储过程并右键单击,选择“Debug Procedure …” 显示了调试脚本。 我走到线上执行SP,然后按F11进入。此时我看到以下内容: 我按下附件并显示以下错误: 此后,该过程执行并执行管道function,但它不允许我进行附件和调试。 我做错了什么想法? 谢谢克雷格

在gridview中获取特定数据行?

如何在asp.net中获取GridView的特定数据行? 我有这个图像: 示例:我想获取studentID = 2011017997的特定数据行及其CourseNo =’CmpE 515′; 我如何获得他们的具体数据? GridViewRow是否具有内置函数之一来获取数据行? 这是aspx代码: Student Assessment Form Validation of Subjects Validate 这是我的aspx代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; namespace SoftwareAnalysisAndDesign.SAD { public partial class ValidateSubjectTeacher : System.Web.UI.Page { CheckBox check = new CheckBox(); protected void Page_Load(object sender, EventArgs e) […]

找到超速的时期?

我脑海里浮现出一些有趣的东西。 假设我们有一个表(在SQL Server中),如下所示: 地点 速度 时间 例如: Location Velocity Time 1 40 1:20 2 35 2:00 3 45 2:05 4 50 2:30 5 60 2:45 6 48 2:55 7 40 3:00 8 35 3:15 9 50 3:20 10 70 3:30 11 50 3:35 12 40 3:40 假设速度障碍是40kph,输出是这样的 Starttime Endtime 2:05 3:00 3:20 3:35 确定超速时间的最佳方法是什么(定义了速度障碍)? 我的第一个想法是将表加载到数组中,然后迭代数组以查找这些句点: […]

小巧玲珑的空间地理类型

我正在编写一些空间示例,并决定给Dapper一个机会,虽然EF有空间支持,我很想再次控制我的SQL(感谢Sam和Marc)。 但是,我需要能够拥有支持DbGeography类的POCO。 例如 : public class BuriedTreasure { public int PirateId { get; set; } public DbGeography MarksTheSpot { get; set; } } 我的谷歌foo一直让我失望,我能找到的最接近的匹配是这个问题,虽然它只是为了增加空间支持作为参数(所以它在那里是50%)。 现在,据我所知,我仅限于以下选项,对我来说这两种选择都不是一个可行的解决方案。 自定义dapper代码以了解SQL Server特定类型 在我的POCO中指定LONG,LAT和ELEVATION小数,并在我的存储过程中创建SPATIAL类型,并有另一个过程来检索值(或使用持久计算列,但几乎相同) 备择方案?

Linq To Sql:exception“String必须正好一个字符”

考虑使用varchar(1) NULL字段定义的SQL Server表。 它被用来存储性别角色。 有些行有数据,有些没有:null或空白。 当然空白应该为空,但在这里考虑空白是一个有效值。 我更喜欢这个值为null。 ID性别 1’M’ 4’M’ 3” 4’F’ 运行Linq To Sql查询时会引发exception,其中someID值为3。 var emp = (from e in db.Employees where e.ID == someID select e); 例外 : 字符串长度必须正好一个字符。 问题 :此exception的原因是什么? 可以采取哪些措施来预防或消除这个问题?

批量插入,asp.net

我需要输入与成员对应的ID号列表。 它们可以在任何给定时间处理10到10,000之间。 我收集数据,解析数据并将其加载到DataTable或其他任何东西(C#)都没有问题,但我想在数据库中进行一些操作。 将所有这些数据插入表中的最佳方法是什么? 我很确定我不想为每个语句运行一次并插入10,000次。