Tag: tsql

T-Sql中的时间戳在C#中意味着什么?

我正在尝试开发一个模型对象来保存一个Sql Server行,我完全理解除了T-Sql / SqlServer时间戳之外如何做到这一点。 该表定义为: CREATE TABLE activity ( activity_id int , ip_address varchar(39) , user_id varchar(255) , message_text , dt timestamp ) 当我将表行解析为我的对象时,对于int或字符串,我希望做类似的事情: ActivityID = (int)dataReader[“activity_id”]; IPAddress = (string)dataReader[“ip_address”]; 但是我该如何处理时间戳列? 我可以在任何地方找到没有“timestamp”数据类型。 我知道Sql Server将时间戳存储为8字节的二进制文件,但这通常与.NET中的相同? 编辑添加:一些额外的信息……这是从我们的大型机上的DB2表返回的一行,来自Sql Server视图。 “Rowversion”不是一个选项,DB2正在将列作为时间戳处理。 如果timestamp和rowversion相同,也许我可以将它视为一个,但否则我会遇到时间戳。 再次编辑补充说:这个项目将让我疯狂。 它至少会是一次短途旅行。 无论如何,是的@JoelC这是一个Sql Server视图,进入大型机上的DB2数据库。 我终于能够找到我们的一位DBA,他们轻蔑地解释说“当然”DB2 TIMESTAMP在Sql Server视图中遇到日期时间。 根据他的语调,我猜只有新手不知道这一点。 这就是为什么他在实际视图中将其命名为“datetime”,Duh! (我在我的示例中给它一个不同的名称,以便不触发对命名约定的评论 – 实际的数据模型图表示它是TIMESTAMP并将其命名为时间戳)。 所以,在这种情况下,显然必须将其转换为DateTime。 我想我可能会开始考虑成为一名DBA,这样我也可以让程序员疯狂。 对不起,如果我误导了这个问题的任何响应者 – 这是无意的,因为我实际上期待时间戳是一个时间戳。 […]

EF 4在SQL中生成UNICODE字符串常量,其中列类型为varchar。 怎么避免?

在我的代码中,我有以下L2E查询的片段: where ol.ordhead.ohcustno == login && (ol.ollastdoctype == “IN”) && ol.olstatus == “9” 这转换为以下SQL片段: WHERE ([Extent8].[ohcustno] = @p__linq__1) AND (”IN” = [Extent7].[ollastdoctype]) AND (”9” = [Extent7].[olstatus]) … 在某个输入上,查询执行3秒。 我这样改变查询: where ol.ordhead.ohcustno == login && (ol.ollastdoctype == “IN” || ol.ollastdoctype == “CR”) && ol.olstatus == “9” 结果SQL更改如下: WHERE ([Extent6].[ohcustno] = @p__linq__1) AND ([Extent5].[ollastdoctype] IN (N”IN”,N”CR”)) AND […]

在C#LINQ中实现RANK OVER SQL子句

我需要实现以下T-SQL子句…. RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank …在C#LINQ中。 到目前为止,我想出的是…… var rank = data.GroupBy(d => d.CategoryKey) .Select(group => group.OrderByDescending(g => g.Rate * @BAES_RATE) 我想这会给我按照率* BASE_RATE排序的每个等级分区。 但我真正需要的是单行的单个等级 ,这是更大结果中的子查询。 所以我正在使用的完整SQL查询就像…. SELECT a.Rate, a.CategoryKey, a.ID, . . . RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as […]

如何确定任意一块T-SQL所需的参数?

基本上,我正在寻找一个适用于任意T-SQL的SqlCommandBuilder.DeriveParameters 。 例如,此查询需要一个参数: SELECT @Foo [Foo], ‘@Bar’ [Bar], @Baz [Baz] 我基本上需要提取: new[] { “Foo”, “Baz” } 从上面。 我可以构建一个SQL解析器,但是我有一个到SQL服务器的开放连接,所以如果可能的话我更愿意使用现有的选项。 编辑: 必须有一种方法可以做到这一点,因为SQL Server的商业智能开发工作室能够非常成功地完成这项工作。 编辑2: SQL BIDS正在执行此命令以描述结果: exec sp_executesql N’SET FMTONLY OFF;SET FMTONLY ON;SELECT @Foo [Foo], ”@Bar” [Bar], @Baz [Baz]’, N’@Foo sql_variant,@Baz sql_variant’, @Foo=NULL,@Baz=NULL 这解释了它如何确定列,但它可能只是字符串解析来获取参数…

如何计算C#中的SQL Server(hashbytes(’SHA1’,))的等价物?

在我的数据库中,我有一个计算列,其中包含一个名为URLString的列的SHA1哈希值,该列保存URL(例如“http://xxxx.com/index.html”)。 我经常需要查询表以根据URLString列查找特定的URL。 该表包含100K,这些查询需要几秒钟(使用SQL Azure)。 由于URL可能很长,我无法在此列上创建索引(大于450字节)。 为了加快速度,我想从C#计算SQL Server哈希字节(’SHA1’,[URLString])的等效值,并根据该值进行查询。 我尝试了下面的代码,但是我获得的值与数据库计算的值不同。 var urlString = Encoding.ASCII.GetBytes(url.URLString); //UTF8 also fails var sha1 = new SHA1CryptoServiceProvider(); byte[] hash = sha1.ComputeHash(urlString); 我在这里错过了一些小事吗? 我对其他可以解决相同问题的想法持开放态度(只要它们受SQL Azure支持)。 示例:在数据库中,URL http://www.whatismyip.org/的自动计算SHA1值为0xAE66CA69A157186A511ED462153D7CA65F0C1BF7。

以编程方式生成SQL代码

我通过右键单击数据库,通过在任务菜单中生成脚本手动生成脚本 。 现在我的问题是通过c#代码生成该脚本… 我的问题是 是否可以通过c#代码生成? 给我一些提示才能完成? 等待您宝贵的建议和命令。

在哪里(ID数组)

我有webservice,它传递了一组int。 我想按如下方式执行select语句,但不断出错。 我需要将数组更改为字符串吗? [WebMethod] public MiniEvent[] getAdminEvents(int buildingID, DateTime startDate) { command.CommandText = @”SELECT id, startDateTime, endDateTime From tb_bookings WHERE buildingID IN (@buildingIDs) AND startDateTime <= @fromDate"; SqlParameter buildID = new SqlParameter("@buildingIDs", buildingIDs); }