这是更多的一个语法问题,我试图写一个存储过程或函数,我可以embedded到一个查询,如: select * from MyBigProcOrFunction 我试图定义一个表格函数,但我不明白如何做,因为我build立tmp表格来处理数据,然后才能最终返回到结束表。 我的代码是: create function FnGetCompanyIdWithCategories() returns table as return ( select * into a #tempTable from stuff ' etc ' select companyid,Company_MarketSector from #tempTables 'the returning table data ) 如果我定义了一个函数,我如何将它作为表格返回?
我有一个SQL Server(2012),我使用entity framework(4.1)访问。 在数据库中,我有一个名为URL的表格,一个独立的进程提供新的URL。 URL表中的条目可以处于“新build”,“正在处理”或“已处理”状态。 我需要从不同的计算机访问URL表格,检查状态为“New”的URL条目,取第一个,并将其标记为“In Process”。 var newUrl = dbEntity.URLs.FirstOrDefault(url => url.StatusID == (int) URLStatus.New); if(newUrl != null) { newUrl.StatusID = (int) URLStatus.InProcess; dbEntity.SaveChanges(); } //Process the URL 由于查询和更新不是primefaces的,我可以让两台不同的计算机读取和更新数据库中相同的URL条目。 有没有办法让select然后更新序列primefaces,以避免这种冲突?
我想知道为什么SqlDateTime.MinValue和DateTime.MinValue不一样?
我需要在SQL Server 2005数据库中的两个表上实现更改跟踪。 我需要审计添加,删除,更新(有关更新内容的详细信息)。 我打算使用触发器来做到这一点,但在Google上发现后,我发现这样做很不容易,我想避免这种情况。 任何人都可以发布一个更新触发器的例子,以成功和优雅的方式完成这一点? 我希望结束以下结构的审计表: ID LOGDATE 表名 TransactionType(更新/插入/删除) 的recordId 字段名 的OldValue 的NewValue …但我很乐意提供build议。 谢谢!
我有一种情况,我需要强制一组列的唯一约束,但只有一列的一个值。 所以例如我有一个像表(ID,名称,RecordStatus)表。 RecordStatus只能有一个值1或2(活动或删除),我想创build一个唯一的约束(ID,RecordStatus)只有当RecordStatus = 1,因为我不在乎是否有多个删除logging相同ID。 除了写触发器,我可以这样做吗? 我正在使用SQL Server 2005。
我们有这样的代码: ms = New IO.MemoryStream bin = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin.Serialize(ms, largeGraphOfObjects) dataToSaveToDatabase = ms.ToArray() // put dataToSaveToDatabase in a Sql server BLOB 但内存蒸汽从大内存堆中分配一个大的缓冲区 ,这给我们带来了问题。 那么我们如何在不需要足够的空闲内存来存放序列化对象的情况下stream式传输数据。 我正在寻找一种方法从SQL服务器获取stream,然后可以传递给bin.Serialize(),以避免保留我的进程内存中的所有数据。 同样为了读取数据… 一些更多的背景。 这是一个复杂的数字处理系统的一部分,它可以近乎实时地处理数据,查找设备问题等等,当数据馈送等数据质量出现问题时,序列化可以重新启动。(我们存储数据馈送并在操作员编辑出不良值后重新运行。) 因此,我们更经常地序列化对象,然后我们对它们进行反序列化。 我们正在序列化的对象包括非常大的数组,主要是双打以及许多小的“更普通”的对象。 我们正在推动32位系统的内存限制,并使车库collections家非常努力。 (系统中的其他地方正在改进效果,例如重新使用大型数组,而不是创build新的数组。 通常情况下,国家的系列化是解决记忆exception的最后一根稻草 ; 我们的峰值内存使用量是在这个序列化完成的时候。 我认为当我们对序列化对象的时候,我们会得到大的内存池碎片,我想在给定数组大小的情况下,还有其他大内存池碎片的问题。 (这个还没有被调查过,因为第一个看这个的人是数值处理专家,而不是内存pipe理专家。) 客户是否使用Sql Server 2000,2005和2008的混合体,如果可能的话,我们宁愿每个版本的Sql Server都没有不同的代码path。 我们可以同时有多个活动模型(在不同的过程中,跨越多台机器),每个模型可以有许多保存的状态。 因此,保存的状态存储在数据库blob而不是文件中。 由于保存状态的传播很重要,所以我宁愿将对象序列化为一个文件,然后将这个文件一次放入一个BLOB块中。 其他相关的问题,我问过 如何从/到SQL Server BLOB字段stream数据? 是否有一个像Sql Server 2005一样的SqlFileStream类?
我正在运行一些pipe理查询并编译SQL Server 2008中sp_spaceused结果,以查看数据库中某些表的数据/索引空间比率。 当然,我在结果中得到各种各样的大数字,我的眼睛开始变得光彩照人。 如果我能用逗号格式化所有这些数字(987654321变成987,654,321)真的很方便。 有趣的是,在我使用SQL Server多年以来,这个问题从来没有出现过,因为大部分时间我都会在表示层进行格式化,但在这种情况下,SSMS中的T-SQL结果就是表示层。 我已经考虑过创build一个简单的CLR UDF来解决这个问题,但是看起来这应该在普通的旧T-SQL中可行。 所以,我会在这里提出这个问题 – 你如何在香草T-SQL中进行数字格式化?
将XML数据分解到各种数据库列的最佳方式是什么? 到目前为止,我主要使用如下节点和值函数: INSERT INTO some_table (column1, column2, column3) SELECT Rows.n.value('(@column1)[1]', 'varchar(20)'), Rows.n.value('(@column2)[1]', 'nvarchar(100)'), Rows.n.value('(@column3)[1]', 'int'), FROM @xml.nodes('//Rows') Rows(n) 但是,我发现这对于即使是中等大小的xml数据也变得非常慢。
我已经使用了一段时间了: SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col)) 然而最近,我发现一个所有“0”字符像“00000000”的列的问题,因为它从来没有发现一个非“0”字符匹配。 我见过的另一种技术是使用TRIM : REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0') 如果有embedded空格,则会出现问题,因为当空格变回“0”时,它们将变为“0”。 我试图避免一个标量的UDF。 在SQL Server 2005中,我发现UDF有很多性能问题。
我无法find上个月的第一天和最后一天给出时间戳的解决scheme。 希望这可以帮助别人。 如果已经有这个问题的解决scheme,我很抱歉。 这是解决scheme。 SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) – 2, 0) as FirtDayPreviousMonthWithTimeStamp, DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp 如果currentdate = '2012-7-31'这将返回以下内容currentdate = '2012-7-31' 结果: 2012-06-01 00:00:00.000 2012-06-30 23:59:59.000 如果currentdate = '2012-1-1'这将返回以下内容 结果: 2011-12-01 00:00:00.000 2011-12-31 23:59:59.000