Tag: tsql

SqlTransaction.Commit()之前的SqlCommand.Dispose()?

是否可以在提交事务之前处理分配给事务的命令? 我自己测试了以下代码,它似乎运行良好,但这是一个相当小的例子,所以如果有人肯定知道我正在寻找确认。 internal static void TestTransaction() { try { Program.dbConnection.Open(); using (SqlTransaction transaction = Program.dbConnection.BeginTransaction()) { Boolean doRollback = false; for (int i = 0; i < 10; i++) { using (SqlCommand cmd = new SqlCommand("INSERT INTO [testdb].[dbo].[transactiontest] (testvalcol) VALUES (@index)", Program.dbConnection, transaction)) { cmd.Parameters.AddWithValue("@index", i); try { cmd.ExecuteNonQuery(); } catch (SqlException) { doRollback = […]

构建和部署工作,但不运行

当我尝试部署或构建报告时,我能够成功。 没有错误。 但是,当我尝试在本地运行它时,我得到: 我会非常感谢我可以从哪里开始解决这个问题? 我在Windows 7,64位的Visual Studio 2008中运行SSRS 2008。

在SQL中拆分列,然后在另一个表中查找每个列

我不确定这是否可以在SQL中使用,如果不是,我将以编程方式执行 – 但如果有办法,它会很棒。 基本上,我在一个表中有一个列,用另一个表中的ID填充,用逗号分隔 – 所以字段可能如下所示: 3,4,9 这些链接到另一个表,其中上面字段中的数字是行的主键。 在行中是一个描述,我想向用户显示而不是数字。 所以基本上,我不想向用户显示3,4,9,而是想在另一个表中查找相关描述。 这可能吗?

linq sql最接近数字

我有一张桌子 Id Number 1 9 2 10 3 12 4 19 5 20 选择Id,其中Number最接近18,它应返回第4行,即19 我如何在linq和tsql中写这个? 谢谢

为什么要使用SqlParameter 而不是嵌入参数?

我有一个sqlhelper类,包含一个重载的ExecuteNonQuery:一个只有一个参数(commandText),另一个有两个参数(commandText,SqlParameter [])。 假设我有一个没有用户交互的独立控制台应用程序,我将调用一个只更新一个包含3个参数的表的存储过程,如果我可以轻松地构建字符串,那么使用SqlParameter []有什么好处?只是将它作为commandText发送? 换句话说,为什么要使用以下内容: SqlParameter[] parameters = { new SqlParameter(“parm1” SqlDbType.VarChar, 3), new SqlParameter(“parm2”, SqlDbType.VarChar, 8), new SqlParameter(“parm3”, SqlDbType.VarChar, 2), new SqlParameter(“parm4”, SqlDbType.VarChar, 4) }; parameters[0].Value = p1; parameters[1].Value = p2; parameters[2].Value = p3; parameters[3].Value = p4; 当我可以使用这样的东西时: strQueryToRun = string.Format(“exec updateTable {0}, {1}, {2}, {3}”, p1, p2, p3, p4); 这是一个独立的控制台应用程序,因此不可能进行SQL注入。 谢谢。

使用Replace和Length检查避免SQL Not IN

我有一种情况,我必须动态创建我的SQL字符串,我试图尽可能使用参数和sp_executesql,所以我可以重用查询计划。 在进行大量的在线阅读和个人体验时,我发现“NOT IN”和“INNER / LEFT JOIN”是表现缓慢且基本(最左侧)表很大(1.5M行,50列) )。 我也读过,应该避免使用任何类型的函数,因为它会减慢查询速度,所以我想知道哪个更糟糕? 我过去曾经使用过这种解决方法,虽然我不确定这是最好的办法,但是避免在项目列表中使用“NOT IN”时,例如我传入3个字符串的列表例如,使用管道分隔符(仅在元素之间): LEN(@param1) = LEN(REPLACE(@param1, [col], ”)) 代替: [col] NOT IN(‘ABD’, ‘RDF’, ‘TRM’, ‘HYP’, ‘UOE’) …想象一下字符串列表的长度是1到大约80个可能的值,并且这种方法也不能将它自己用于paraterization。 在这个例子中,我可以使用“=”表示NOT IN,我会使用传统的列表技术作为我的IN,或者!=如果这是一个更快,虽然我怀疑它。 这比使用NOT IN快吗? 作为一种可能的第三种选择,如果我知道所有其他可能性(IN可能性,可能是80-95倍更长的列表)并且通过那些可能性,那该怎么办呢? 这将在应用程序的业务层中完成,以便将工作负载从SQL Server中删除。 查询计划重用不是很好的可能性,但如果它在一个大讨厌的查询中刮了一两秒,为什么不是。 我也擅长SQL CLR函数创建。 由于以上是字符串操作,CLRfunction最好吗? 思考? 在此先感谢任何和所有的帮助/建议/等。

找到超速的时期?

我脑海里浮现出一些有趣的东西。 假设我们有一个表(在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 确定超速时间的最佳方法是什么(定义了速度障碍)? 我的第一个想法是将表加载到数组中,然后迭代数组以查找这些句点: […]

Linq to SQL with Group by

我试图将此T-SQL转换为Linq To SQL,但无法通过聚合函数计算出组。 欢迎任何帮助。 select c.ClientID, GivenName, Surname, max(a.Address), max(t.Value) from Client c left join ClientAddress a on c.ClientID = a.ClientID left join ClientContact t on c.ClientID = t.ClientID group by c.ClientID, GivenName, Surname

使用游标使用C#从SQL Server读取时间序列数据?

我有一个包含时间序列数据的大型数据库(5000万行)。 [datetime]列上有一个聚簇索引,可确保表始终按时间顺序排序。 在逐行的基础上,将表的行读出到C#应用程序中的最高效的方法是什么?

多行中的SQL语句抛出错误

为了防范我的问题,我在发布之前使用了Google,Bing和StackOv :-)。 此外,我是MVC3的新手,仍然在努力解决框架的语法错综复杂问题。 我在下面的代码块中的SQL语句中有一个错误,这让我很烦恼。 语法显示正确。 我使用Select * From ..简化了SQL语句,它返回数据就好了。 此外,如果有更好的方法(不使用EF对象),请务必接受建议。 我非常喜欢看到SQL语句的灵活性和控制 – 要么就是习惯的forms,要么习惯于它:-)。 提前致谢!! @using System.Data.SqlClient; @using System.Configuration; @{ Layout = null; } @{ SqlConnection cn = null; cn = new SqlConnection(ConfigurationManager.ConnectionStrings[“sqlConn”].ToString()); cn.Open(); SqlCommand cmd = new SqlCommand((@”SELECT DISTINCT” + “tblSBT.sname,” + “tblSBDetails.sid,” + “tblSBDetails.assignedtrack,” + “tblSBDetails.maxtrack,” + “tblSBDetails.currentvals,” + “tblSBDetails.maxvals,” + “tblSBDetails.lastupdated” + “FROM” […]