小编aje*_*jeh的帖子

NOLOCK 提示更改返回记录的顺序

Client字段上有一个聚集索引LastName

当我简单地从表中转储所有记录时,它们会按字母顺序出现,除非(nolock)在相关查询中使用了提示。该提示会更改记录的顺序。应该是?。我很肯定没有其他会话有更改该表的开放事务(至少sp_who2没有向我显示任何内容)。

如何解释顺序上的差异?

从评论中提取的其他信息:

  1. 没有顺序。非聚集索引是否应该强制执行顺序?

  2. 即使使用指定聚集索引的索引提示,查询仍然返回不同的顺序。他们应该吗?我想知道为什么nolock在没有明显改变计划的情况下更改返回记录的顺序。

  3. 我对它们做了一个 WinDiff - 除了 [the] (nolock)[query hint]之外相同。

order-by hints sql-server-2012

11
推荐指数
3
解决办法
2206
查看次数

绿色图标是什么意思,为什么包体在有它时不展开?

在 SQLDeveloper 4 中,一些 10g PL/SQL 包有一个普通的 crate,而其他的有一个绿点。

那些带有绿点的人不会扩张他们的身体(可能只是巧合)。带绿点和不带绿点的包有什么区别,为什么有些包不膨胀?

在此处输入图片说明

oracle-10g oracle-sql-developer

6
推荐指数
1
解决办法
1万
查看次数

创建 CLR 程序集时,未授权程序集 PERMISSION_SET=UNSAFE

运行所有这些命令的登录名是sysadminSQL 2012 Developer 实例上服务器角色的成员。它是部署到的数据库的所有者。EXTERNAL ACCESS ASSEMBLY已授予此 DB 中的登录权限。还尝试了以下所有内容作为sa登录无济于事。

alter database test set trustworthy on
go
create assembly [icsharpcode.sharpziplib]
from 'C:\Workspace\111\icsharpcode-SharpZipLib-4f2d664\bin\Release\ICSharpCode.SharpZipLib.dll'
with permission_set = UNSAFE --< This works!
go
create assembly OutOfRowCompression
from 'C:\Workspace\Sandbox\OutOfRowCompression\OutOfRowCompression\bin\Debug\OutOfRowCompression.dll'
with permission_set = UNSAFE --< This fails!
go
Run Code Online (Sandbox Code Playgroud)

最后一个命令失败:

消息 10327,级别 14,状态 1,第 1 行 CREATE ASSEMBLY 为程序集“OutOfRowCompression”失败,因为程序集“OutOfRowCompression”未被授权用于 PERMISSION_SET = UNSAFE。当以下任一情况为真时,程序集被授权:数据库所有者 (DBO) 具有 UNSAFE ASSEMBLY 权限并且数据库具有 TRUSTWORTHY 数据库属性;或者程序集使用证书或非对称密钥签名,该密钥具有具有不安全程序集权限的相应登录名。

收到错误后,我使用新的非对称密钥对程序集进行了签名key1.pfx,并将其添加到主数据库中:

CREATE ASYMMETRIC KEY key1
FROM executable
FILE = 'C:\Workspace\Sandbox\OutOfRowCompression\OutOfRowCompression\bin\Debug\OutOfRowCompression.dll'
Run Code Online (Sandbox Code Playgroud)

验证密钥是否存在: …

sql-server compression sql-server-2012 sql-clr

4
推荐指数
1
解决办法
1万
查看次数

适用于 MS SQL Server 开发人员的 iSeries 的 UPDATE ... FROM ... 语法

当我想将一个表更新为 SQL Server 中另一个表中的值时,我将使用以下语法:

UPDATE t1
SET t1.a = t2.a
FROM t1
INNER JOIN t2 ON t2.b = t1.b
Run Code Online (Sandbox Code Playgroud)

iSeries 7 的语法是什么?

sql-server db2 iseries

3
推荐指数
2
解决办法
2万
查看次数

尝试压缩现有表不会改变表大小

SQL 2012 Enterprise DB 中有一个现有表,它的大小约为 120MB,包含约 2000 条记录。其最大的字段nvarchar(max)包含海绵状 XML(范围从 20 到 300 kB),其本身在 7Zip 或 RAR 中大约压缩 50-75%。

我尝试了以下立即返回的命令,即使简单地从表中查询 * 需要花费几秒钟:

alter table sch.table1 REBUILD PARTITION=ALL WITH (DATA_COMPRESSION=ROW)
alter table sch.table1 REBUILD PARTITION=ALL WITH (DATA_COMPRESSION=PAGE)
alter table sch.table1 REBUILD PARTITION=ALL WITH (DATA_COMPRESSION=NONE)
Run Code Online (Sandbox Code Playgroud)

但是在它们中的任何一个之后大小都不会改变,即使表的属性正确显示了压缩类型。

服务器实际上是否对行/页应用和删除压缩?它似乎没有时间在瞬间完成每个命令的执行。

sql-server compression

3
推荐指数
1
解决办法
1636
查看次数

重新编写子选择作为使用“over(partition by ...)”生成的列的条件

我想知道是否可以使用over (partition by...)子句以避免在下面的示例中使用子选择:

declare @t table (
     id         int
    ,code       char(2)
    ,descriptor int
)

insert into @t
      select 1, 'a1', 10
union select 1, 'a1', 20
union select 1, 'a1', 30
union select 2, 'b1', 10
union select 2, 'b1', 20
union select 2, 'b1', 30
union select 2, 'b2', 10
union select 2, 'b2', 20
union select 2, 'b2', 30
union select 3, 'c4', 10
union select 3, 'c4', 20
union select 3, 'c4', 30
union select …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 window-functions

2
推荐指数
3
解决办法
1556
查看次数

测试 iSeries SQL 存储过程中是否存在临时表

如果 DB2 for IBM i 7.1 中已经存在全局临时表,那么测试的语法是什么?

我试过这个DECLARE GLOBAL TEMPORARY TABLE

SELECT * FROM QSYS2.SYSTABLES WHERE SYSTEM_TABLE_SCHEMA = 'QTEMP';
Run Code Online (Sandbox Code Playgroud)

它返回了一个空的结果集。永久表似乎包含在该视图中,但不包含临时表。

最终,我需要有条件地删除临时表或截断/删除数据(如果存在)。

db2 iseries

1
推荐指数
1
解决办法
4329
查看次数

寻找一个片段,说明在 where 子句中连接的模糊结果

不久前(大约 2004 年),我在一个团队中担任后端开发人员,每个人都使用 where 子句加入。作为使用内/外连接的支持者,我向他们展示了一个 where 子句连接的示例,该示例说明了它如何根据数据产生不明确的结果,以及外连接如何避免该问题。

我必须做同样的演示,但再也找不到那个片段了。它在我的文件档案中的某个地方,不幸的是我无权访问。有没有人有一个方便的例子?

join sql-server

0
推荐指数
1
解决办法
69
查看次数