Questions tagged «sql-server-2008»

使用此标记可以解决针对Microsoft SQL Server 2008版本的特定问题。

7
如何在SQL Server 2008 R2中使用CONCAT函数?
我一直在寻找CONCATSQL Server 2008 R2中的功能。我找到了此功能的链接。但是当我使用此功能时,它会出现以下错误: 消息195,级别15,状态10,第7行 'CONCAT'不是公认的内置函数名称。 CONCATSQL Server 2008 R2中是否存在该功能? 如果没有,如何在SQL Server 2008 R2中连接字符串?




10
生成3到6之间的随机整数值
是否有可能在Microsoft SQL Server中生成从最小值到最大值的随机int值(例如3-9,例如15-99等) 我知道,我可以从0生成最大值,但是如何增加最小值边框? 该查询生成从1到6的随机值。需要将其从3更改为6。 SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables 5秒后添加: 愚蠢的问题,对不起... SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables

5
SQL NVARCHAR和VARCHAR限制
所有,我都有一个大型(不可避免的)动态SQL查询。由于选择标准中字段的数量,包含动态SQL的字符串的长度超过4000个字符。现在,我知道为设置了最大4000 NVARCHAR(MAX),但是在Server Profiler中查看了已执行的SQL语句 DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO 似乎可以工作(!?),对于另一个也很大的查询,它抛出与此4000极限(!?)相关的错误,基本上在4000极限之后修剪所有SQL,并给我留下语法错误。尽管这样的探查,它表示在这个动态的SQL查询全(!?)。 这里到底发生了什么,我应该将这个@SQL变量转换为VARCHAR并继续进行下去吗? 谢谢你的时间。 附言 能够打印出超过4000个字符以查看这些大查询也将是一件很不错的事情。以下仅限于4000 SELECT CONVERT(XML, @SQL); PRINT(@SQL); 还有其他很酷的方法吗?

5
集群与非集群
我对SQL(Server 2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: CREATE TABLE dbo.CourtOrder ( CourtOrderID INT NOT NULL IDENTITY(1,1), (Primary Key) PersonId INT NOT NULL, + around 20 other fields of different types. ) 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,它是一个唯一字段(主键),应该像我们经常为主要目的进行索引那样进行索引Select from table where primary key = ... 然后,我在PersonId上应用了CLUSTERED索引。原因是按物理方式将特定人员的订单分组,因为绝大多数工作都在为一个人获取订单。所以,select from mytable where personId = ... 我现在已经对此感到困惑。有人告诉我,应该将聚簇索引放在主键上,而普通索引放在personId上。我觉得这很奇怪。首先,为什么要在唯一列上放置聚集索引?什么是集群?当然这是对聚集索引的浪费吗?我相信普通索引将用于唯一列。同样,对索引进行聚类将意味着我们无法对不同的列进行聚类(每个表一个,对吗?)。 被告知我犯了一个错误的原因是,他们认为在PersonId上放置聚簇索引会使插入速度变慢。对于选择速度提高5%的情况,插入和更新速度将降低95%。那是正确和有效的吗? 他们说,因为我们对personId进行了群集,所以在我们插入或更改PersonId时,SQL Server必须重新排列数据。 所以然后我问,为什么SQL这么慢,为什么会有CLUSTERED INDEX的概念呢?像他们说的那样慢吗?我应该如何设置索引以获得最佳性能?我本以为SELECT的使用比INSERT还要多...但是他们说我们在INSERTS上存在锁定问题... 希望可以有人帮帮我。

12
错误:“不能嵌套INSERT EXEC语句。” 和“不能在INSERT-EXEC语句中使用ROLLBACK语句。” 如何解决呢?
我有三个存储过程Sp1,Sp2和Sp3。 第一个(Sp1)将执行第二个(Sp2)并将返回的数据保存到@tempTB1,第二个将执行第三个(Sp3)并将数据保存到@tempTB2。 如果我执行,Sp2它将正常工作,它将从中返回我的所有数据Sp3,但是问题出在Sp1,当我执行它时,它将显示此错误: INSERT EXEC语句不能嵌套 我试图更改位置,execute Sp2但显示另一个错误: 不能在INSERT-EXEC语句中使用ROLLBACK语句。

9
使用T-SQL生成MD5哈希字符串
有没有一种方法可以在不使用fn_varbintohexstr的情况下生成varchar(32)类型的MD5哈希字符串 SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32) 因此可以在带有SCHEMABINDING的视图内使用

13
ReferentialConstraint中的从属属性映射到商店生成的列
写入数据库时​​出现此错误: ReferentialConstraint中的从属属性映射到商店生成的列。列:“ PaymentId”。 public bool PayForItem(int terminalId, double paymentAmount, eNums.MasterCategoryEnum mastercategoryEnum, int CategoryId, int CategoryItemId) { using (var dbEntities = new DatabaseAccess.Schema.EntityModel()) { int pinnumber = 0; long pinid = 1; //getPinId(terminalId,ref pinnumber) ; var payment = new DatabaseAccess.Schema.Payment(); payment.CategoryId = CategoryId; payment.ItemCategoryId = CategoryItemId; payment.PaymentAmount = (decimal)paymentAmount; payment.TerminalId = …

7
如何跨多个列查找重复项?
所以我想在下面做这样的SQL代码: select s.id, s.name,s.city from stuff s group by s.name having count(where city and name are identical) > 1 要产生以下内容((但请忽略仅名称或城市匹配的地方,必须在两列中同时出现): id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris



14
如何在SQL Server Management Studio 2008中自动执行“生成脚本”任务?
我想在SQL Server Management Studio 2008中自动生成脚本。 现在我要做的是: 右键单击我的数据库,“任务”,“生成脚本...”。 手动选择我需要的所有导出选项,然后在“选择对象”选项卡上单击全选 选择导出文件夹 最终点击“完成”按钮 有没有办法自动执行此任务? 编辑:我想生成创建脚本,而不是更改脚本。

3
替换从左外部联接返回的默认空值
我有一个Microsoft SQL Server 2008查询,该查询使用左外部联接从三个表返回数据。很多时候,第二个和第三个表中没有数据,因此我得到一个空值,我认为这是左外部联接的默认值。有没有办法替换select语句中的默认值?我有一个解决方法,可以选择一个表变量,但感觉有点脏。 SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', iar.Compliance FROM InventoryAdjustmentReason iar LEFT OUTER JOIN InventoryAdjustmentItem iai on (iar.Id = iai.InventoryAdjustmentReasonId) LEFT OUTER JOIN Item i on (i.Id = iai.ItemId) LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo) WHERE iar.StoreUse = 'yes' 如果可能的话,我希望数量和常规价格默认为零。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.