Tag: sql server

如何在CLR UDF中返回nvarchar(max)?

假设以下定义: /// /// Replaces each occurrence of sPattern in sInput with sReplace. This is done /// with the CLR: /// new RegEx(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace). /// The result of the replacement is the return value. /// [SqlFunction(IsDeterministic = true)] public static SqlString FRegexReplace(string sInput, string sPattern, string sReplace) { return new Regex(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace); } sInput长度> […]

动态表名称与entity framework

我有很多表具有相同的模型结构,但其他表名与其他数据(在这种情况下将是~100表)。 我想使用Entity Framework在运行时动态切换表名(例如从路由获取名称表)。 数据库中的表是由其他脚本动态添加和删除的。 有这样的方法可以做到这样的良好表现吗? db.Table(“TableName”).Where(x => x.ID == ID)

Linq包含关键字的不同记录

我需要根据汽车关键字搜索返回一个独特的记录列表,如:“Alfa 147” 问题是,因为我有3辆“Alfa”汽车,它会返回1 + 3条记录(阿尔法似乎为1,结果为147,Alfa结果为3) 编辑: SQL-Server查询看起来像这样: SELECT DISTINCT c.Id, c.Name /*, COUNT(Number of Ads in the KeywordAdCategories table with those 2 keywords) */ FROM Categories AS c INNER JOIN KeywordAdCategories AS kac ON kac.Category_Id = c.Id INNER JOIN KeywordAdCategories AS kac1 ON kac.Ad_Id = kac1.Ad_Id AND kac1.Keyword_Id = (SELECT Id FROM Keywords WHERE Name […]

标识列上具有父/子关系的SqlBulkCopy和DataTables

我们需要根据父表中的Identity主键更新多个具有父/子关系的表,父表由一个或多个子表作为外键引用。 由于数据量很大,我们希望在内存中构建这些表,然后使用C#中的SqlBulkCopy从DataSet或单个DataTables更新数据库。 我们还希望从多个线程,进程和可能的客户端并行执行此操作。 我们在F#中的原型显示了很多承诺,性能提高了34倍,但是这段代码强制了父表中已知的Identity值。 如果没有强制,当SqlBulkCopy插入行时,Identity列会在数据库中正确生成,但Identity值不会在内存中的DataTable中更新。 此外,即使它们是,也不清楚DataSet是否能正确地修复父/子关系,以便随后可以用正确的外键值写入子表。 任何人都可以解释如何使用SqlBulkCopy更新标识值,以及如何配置数据集以保留和更新父/子关系,如果在单个DataTables上调用DataAdapter到FillSchema时不自动完成。 我不想要的答案: 读取数据库以查找当前最高的Identity值,然后在创建每个父行时手动递增它。 不适用于多个进程/客户端,据我所知,失败的事务可能会导致某些标识值被跳过,因此这种方法可能会破坏关系。 一次一个地写出父行,并要求返回Identity值。 通过使用SqlBulkCopy,这至少会破坏一些收益(是的,有多个子行比父类行多,但仍有很多父行)。 类似于以下未回答的问题: 如何使用自动生成的标识密钥更新数据集父子表?

ALTER TABLE DROP COLUMN失败,因为一个或多个对象访问此列

我想这样做: ALTER TABLE CompanyTransactions DROP COLUMN Created 但我明白了: Msg 5074,Level 16,State 1,Line 2对象’DF__CompanyTr__Creat__0CDAE408’依赖于’Created’列。 消息4922,级别16,状态9,行2 ALTER TABLE DROP COLUMN创建失败,因为一个或多个对象访问此列。 这是代码第一表。 某种程度上,迁移已经变得混乱,我试图手动回滚一些变化。 我不知道这是什么: DF__CompanyTr__Creat__0CDAE408

在C#中处理SQL死锁的模式?

我正在用C#编写一个访问SQL Server 2005数据库的应用程序。 该应用程序是数据库密集型的,即使我尝试优化所有访问,设置正确的索引等等,我希望我迟早会遇到死锁。 我知道为什么会发生数据库死锁,但我怀疑我是否能够在没有发生死锁的情况下发布软件。 该应用程序正在使用Entity Framework进行数据库访问。 在C#客户端代码中是否有任何处理SQLExceptions(死锁)的好模式 – 例如在x毫秒后重新运行语句批处理? 澄清; 我不是在寻找一个如何避免死锁的方法(隔离级别,索引,语句顺序等),而是在实际发生时如何处理它们。

触发器返回结果集和/或以SET NOCOUNT OFF运行,而另一个未完成的结果集处于活动状态

我有2台服务器通过低速连接连接,我们正在运行带有Merge复制的SQL Server 2008。 在订阅者,有时在尝试插入新行时,我收到此错误: 触发器返回结果集和/或以SET NOCOUNT OFF运行,而另一个未完成的结果集处于活动状态。 我的数据库没有任何触发器; 唯一的触发器是Merge复制创建的触发器 此外,每当发生此错误时,它会自动回滚现有事务 我正在使用DataTables和TableAdapters来使用事务插入和更新数据库 我检查了什么: 数据库日志文件大小低于50Mb 检查了Zombie事务的源代码(因为我无法在开始时检索实际错误) 检查了两台服务器之间的连接,发现它很拥挤 问题: 如何避免这种行为以及为什么它首先发生? 为什么取消开放交易?

从SQLDataReader读取结果时出现无效的强制转换exception

我的存储过程: @UserName nvarchar(64), AS BEGIN SELECT MPU.UserName, SUM(TS.Monday)as Monday //TS.Monday contains float value FROM dbo.MapTask MT JOIN dbo.MapPU MPU ON MPU.ID = MT.MPUID JOIN dbo.TimeSheet TS ON MT.TMSID = TS.ID WHERE MT.StartDate = @StartDate_int and MPU.UserName = @UserName GROUP BY MPU.UserName END 在我的C#代码中 SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { float monday = (float)reader[“Monday”]; // […]

使用smo重命名数据文件

如何使用SMO重命名物理.mdf .ndf .ldf文件。 这篇文章很有帮助,但我需要使用C#SMO对象。 使用SMO服务器对象我可以检索数据库,然后获取对DataFile对象的访问权限。 按此链接 。 这些都有重命名,但重命名后,没有任何变化。

关于将c#连接到sql server的教程

我希望能够使用c#编辑SQL Server数据库中的表 有人可以给我一个关于连接数据库和编辑表格数据的简单教程 非常感谢