本文取自雅思阅读题。 最後一段身一行尾部的&quot 转译回来;as to&quot 转译回来; 是甚麼意思。 它与後面的&quot 转译回来;much as

什么是排序规则(collation)
关于SQL Server的排序规则,估计大家都不陌生,在创建数据库时我们经常要选择一种排序规则(conllation),一般我们会留意到每一种语言的排序规则都有许多种,比如标准大陆简体中文Chinese_PRC的排序规则就有数十种之多
这些排序规则有什么作用呢?让我们先来看看MS官方的解释:
排序规则指定了表示每个字符的位模式。它还指定了用于排序和比较字符的规则。排序规则具有下面的特征:
区分大小写
比如在SQL Server 2005中,排序规则名称由两部份构成,比如 Chinese_PRC_CI_AI_WS
前半部份是指本排序规则所支持的字符集,如Chinese_PRC 指针对大陆简体字UNICODE的排序规则。
后半部份即后缀的含义如下:
_BIN                指定使用向后兼容的二进制排序顺序。
_BIN2      指定使用 SQL Server 2005 中引入的码位比较语义的二进制排序顺序。
_Stroke   按笔划排序
是否区分大小写,CI不区分,CS区分
是否区分重音,AI不区分,AS区分
是否区分假名类型,KI不区分,KS区分
是否区分全半角,WI不区分,WS区分
既然排序规则如此复杂,那么应用了不同排序规则的列之间默认情况下便不能进行Union、Join、Like等equal操作了,于是便有了排序规则(collation)冲突。
排序规则(collation)冲突
我们知道,SQL Server 从2000 开始,便支持多个排序规则。SQL Server 2000 的数据库可使用除默认排序规则以外的其他排序规则。此外,SQL Server 2000 还支持为列专门制定排序规则。
这样一来,我们在写跨表、跨数据库、跨服务器操作的T-SQL时,如果equal的字段排序规则不同,便会发生排序规则冲突。
比如我们先见两个结构相同的表,但字段的排序规则不同:
-- 1. Create TableA.
CREATE TABLE TagsTableA
NVARCHAR(64)
COLLATE Chinese_PRC_BIN
-- 2. Create TableB.
CREATE TABLE TagsTableB
NVARCHAR(64)
COLLATE Chinese_PRC_CI_AS
当表建好之后执行:
-- 3. Try to join them
SELECT * from TagsTableA A INNER JOIN TagsTableB B on A.TagName = B.TagName
便会出下类似下面的问题:
无法解决 equal to 操作中 &Chinese_PRC_BIN& 和 &Chinese_PRC_CI_AS& 之间的排序规则冲突。
常见的场景——临时表
我们知道,SQL Server的临时表是保存在Tempdb数据库中的。而使用临时表的数据库与临时表的排序规则(conllation)不一定相同。所以,当Tempdb的排序规则与当前使用临时表的数据库排序规则不同时,便会出现排序规则冲突。
一般来说,我们在创建临时表时可能不会注意到排序规则,从而留下排序规则冲突的隐患。
比如的Blog模块中的一个存储过程,便有着这种隐患:
/****** 对?象ó:
StoredProcedure [blogs].[up_CreateGetTagIds]
脚本日期: 01/20/:32 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
RETURN VALUES:
-- =============================================
-- Author:
&Lance Zhang&
-- Create date: &&
-- Description: &Make sure all the tag EXISTS in DB, and then get their ids.&
-- 1. Create Temp Table.
-- 2. Insert TagNames into Temp Table.
-- 3. Add new Tags to [Categories] from query Temp Table.
-- 4. Batch Get All Tag Ids from [Categories].
-- 5. Clear and drop Temp Table.
-- =============================================
ALTER PROCEDURE [blogs].[up_CreateGetTagIds]
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN TRANSACTION;
-- 1. Create Temp Table.
CREATE TABLE #TagsTable
NVARCHAR(64)
-- 2. Insert TagNames into Temp Table.
INSERT INTO
#TagsTable
TG.Tags.value('@i','NVARCHAR(64)') AS TagName
@TagNames.nodes('/ts/t') TG(Tags)
-- 3. Add new Tags to [Categories] from query Temp Table.
INSERT INTO
[Categories]
,[ParentId]
,[CategoryType]
,[CategoryName]
,[LoweredCategoryName]
,[LoweredSlug]
,[Description]
,[CreatedDateUtc]
,[TotalEntities]
,[SortOrder]
-- ParentId, 0 as default.
-- CategoryType, 2 as Post Tag.
TT.TagName,
LOWER(TT.TagName),
TT.TagName,
-- Slug, use CategoryName as default.
LOWER(TT.TagName),
-- LoweredSlug, use LoweredCategoryName as default.
-- Description, Empty as default.
GETUTCDATE(),
-- TotalEntities, 0 as default.
-- SortOrder of PostTags can always be 1.
-- State, 1 as Normal.
#TagsTable TT
LOWER(TT.TagName) NOT IN
C.[LoweredCategoryName]
[Categories] C WITH( UPDLOCK, HOLDLOCK )
[BlogId] = @BlogId
AND [CategoryType] = 2
-- Post Tag.
-- 4. Batch Get All Tag Ids from [Categories].
[CategoryId]
[Categories] C WITH(NOLOCK)
#TagsTable TT
C.[LoweredCategoryName] = LOWER( TT.TagName )
C.[BlogId] = @BlogId
AND C.[CategoryType] = 2
-- Post Tag.
AND C.[State] = 1
-- 1 as Normal status.
-- 5. Clear and drop Temp Table.
TRUNCATE TABLE
#TagsTable
DROP TABLE
#TagsTable
COMMIT TRANSACTION;
BEGIN CATCH
IF XACT_STATE() && 0
ROLLBACK TRANSACTION;
常见的解决方案
知道了什么是排序规则冲突,我们接下来分析冲突的解决方案,以数据库级别的排序规则为例,一般来说,解决方案有下面几种
把SQL实例删了重建 ——大多数情况下等于没说-_-|||
修改数据库的排序规则 ——参考阿牛兄的
在T-SQL中使用COLLATE DATABASE_DEFAULT来解决冲突 ——接下来主要讨论这个
COLLATE DATABASE_DEFAULT
Collate XXX 操作可以用在字段定义或使用时,它会将字段定义或转换成XXX 的排序规则格式。而Collate Database_Default 则会将字段定义或转换成当前数据库的默认排序规则,从而解决冲突。
比如在下面的代码中便使用了Collate Database_Default 来解决字段在equal操作中的排序规则冲突:
Insert into Security.Report (Name)
Select C.Path From SSRS.Catalog C
Where C.Path Collate Database_Default Like @ReportPath + '/%'
And C.Path Collate Database_Default Not In (Select Name From Security.Report R)
当然,在创建临时表时若对字段定义加上Collate Database_Default ,也可以方便地解决潜在的排序规则冲突,比如上一节中提到的存储过程,只要做如下修改即可。
-- 1. Create Temp Table.
CREATE TABLE #TagsTable
NVARCHAR(64)
COLLATE DATABASE_DEFAULT
对于专业的SQLer来说,排序规则的应用场景还有很多,例如利用排序规则特点计算汉字笔划和取得拼音首字母等等,更多信息,请查阅MSDN文档:
阅读(...) 评论()FIXED: this is a
in maven-compiler-plugin 3.1
I am converting an ant-based build of a 1000+ java-sources project to maven. So far so good, but every time launch mvn compile it recompiles everything (instead of reusing old classes)
Using mvn -X compile reports that
[DEBUG] Stale source detected: /project_path/src/main/java/package_path/AFile1.java
[DEBUG] Stale source detected: /project_path/src/main/java/package_path/AFile2.java
(only for files in a certain package, which is possibly unreferenced from
not my sources, I am just trying to mavenize the build)
Compilation does not fail, and classes with updated timestamps are being generated at
/project_path/target/classes/package_path/AFile1.class
/project_path/target/classes/package_path/AFile2.class
However, when looking at timestamps, the java files have not changed since yesterday, and the class files are current. Why are these sources determined to be stale? How can I debug this issue?.
It is a drag to have to recompile 1k+ files even when no changes have occurred...
Sample output:
$ mvn clean compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProject 1.9.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for net.sourceforge:jffmpeg:jar:1.1.0 is missing, no dependency information available
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ my-project ---
[INFO] Deleting /project_path/target
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ my-project ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /project_path/src/main/resources
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1162 source files to project_path/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.215s
[INFO] Finished at: Tue Jul 30 12:42:25 CEST 2013
[INFO] Final Memory: 25M/429M
[INFO] ------------------------------------------------------------------------
$ mvn compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProject 1.9.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for net.sourceforge:jffmpeg:jar:1.1.0 is missing, no dependency information available
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ my-project ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /project_path/src/main/resources
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1162 source files to /project_path/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.140s
[INFO] Finished at: Tue Jul 30 12:42:44 CEST 2013
[INFO] Final Memory: 22M/379M
[INFO] ------------------------------------------------------------------------
解决方案 This is a known problem in maven-compiler-plugin 3.1. It is being tracked in
(the useIncrementalCompilation flag is broken).
The problem is unrelated to another 3.1 bug,
(where files that do not produce .class outputs are always flagged as 'stale').
After testing further, going back to 3.0 did not actually fix the problem (it only works until the next mvn clean compile. However, as Michael Lemke suggests in comments, marking useIncrementalCompilation to false is a now, only the offending package gets recompiled each time (instead of the whole code-base).
本文地址: &
固定:这是Maven的编译器插件中的 3.1 我转换了1000多个Java的源项目的一个基于Ant的构建,以行家。到目前为止好,但每次推出的 MVN编译将其重新编译一切(而不是重用老班)使用 MVN -X编译报道说,
[DEBUG]陈旧源检测:/project_path/src/main/java/package_path/AFile1.java[DEBUG]陈旧源检测:/project_path/src/main/java/package_path/AFile2.java... (只适用于某个软件包,这是从code的其余部分可能未引用的文件,不是我的消息来源,我只是想mavenize编译)编译没有失败,并且正在以产生与更新时间戳班
/project_path/target/classes/package_path/AFile1.class/project_path/target/classes/package_path/AFile2.class... 不过,看着时间戳时,java文件还没有从昨天起改变,类文件都是最新的。为什么这些来源确定为过时?如何调试这个问题?这是一拖必须还要重新编译1K +文件时,情况发生变化,... 示例输出:
$ MVN清洁编译[INFO]扫描项目...[信息][INFO] ----------------------------------------------- -------------------------[INFO]大厦MYPROJECT 1.9.0-SNAPSHOT[INFO] ----------------------------------------------- -------------------------【警告】为net.sourceforge的POM:jffmpeg:罐子:1.1.0丢失,可用的依赖信息[信息][信息] --- Maven的清理插件:2.4.1:清洁(默认清洁)@我的项目---[INFO]删除/ project_path /目标[信息][信息] --- Maven的资源 - 插件:2.5:资源(缺省资源)@我的项目---[调试]执行情境化[信息]使用“UTF-8”编码复制过滤资源。[信息]跳到不存在的resourceDirectory / project_path / src目录/主/资源[信息][信息] --- Maven的编译器插件:3.1:编译(默认编译)@我的项目---检测[INFO]的变化 - 重新编译模块![INFO] 1162编译源文件project_path /目标/班....[INFO] ----------------------------------------------- -------------------------[INFO] BUILD成功[INFO] ----------------------------------------------- -------------------------[INFO]总时间:11.215s[INFO]在表面处理:周二7月30日十二时42分25秒CEST 2013[INFO]最后的内存:25M / 429M[INFO] ----------------------------------------------- -------------------------$ MVN编译[INFO]扫描项目...[信息][INFO] ----------------------------------------------- -------------------------[INFO]大厦MYPROJECT 1.9.0-SNAPSHOT[INFO] ----------------------------------------------- -------------------------【警告】为net.sourceforge的POM:jffmpeg:罐子:1.1.0丢失,可用的依赖信息[信息][信息] --- Maven的资源 - 插件:2.5:资源(缺省资源)@我的项目---[调试]执行情境化[信息]使用“UTF-8”编码复制过滤资源。[信息]跳到不存在的resourceDirectory / project_path / src目录/主/资源[信息][信息] --- Maven的编译器插件:3.1:编译(默认编译)@我的项目---检测[INFO]的变化 - 重新编译模块![INFO] 1162编译源文件/ project_path /目标/班...[INFO] ----------------------------------------------- -------------------------[INFO] BUILD成功[INFO] ----------------------------------------------- -------------------------[INFO]总时间:12.140s[INFO]在表面处理:周二7月30日十二时42分44秒CEST 2013[INFO]最后的内存:22M / 379M[INFO] ----------------------------------------------- ------------------------- 解决方案 这是在Maven的编译器插件3.1的已知问题。它是在https://issues.apache.org/jira/browse/MCOMPILER-209 (在 useIncrementalCompilation 标志被打破)。 问题是无关的另一个错误3.1,https://issues.apache.org/jira/browse/MCOMPILER-205 (其中,不产生的.class输出文件始终标记为“过时”)。 进一步的测试,要回3.0实际上并没有解决这个问题(它只能直到下一个 MVN清洁编译后。但是,迈克尔·莱姆克建议在评论中,标记 useIncrementalCompilation 到假是一个可行的替代品;现在,只有有问题的包被每一次(而不是整个重新编译code-基地)。
本文地址: &
扫一扫关注官方微信扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
so as to的否定形式是甚麼?
zhangying00D7C
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
否定式:包括两种——1、否定不定式:so ...as not to,如此...以至于不能.如:* He was so busy as not to have enough time to complete his mission on time.他是那样忙以至于没有足够的时间去按时完成任务.(否定转移,意思同上,= He was so busy that he did not have enough time to complete his mission on time)* He worked so carelessly as not to succeed to complete his mission on time.他如此漫不经心的工作以至于未能顺利地按时完成任务.(= He worked so carelessly that he did not succeed to complete his mission on time.)2、否定形容词或副词:not so ...as to:没如此...以至于.如:* He is not so busy as to have enough time to complete his mission on time.他不是那样忙以至于有足够的时间去按时完成任务.(= He was not so busy that he could have enough time to complete his mission on time.)* He worked not so hard as to fail to complete his mission on time.他工作如此不努力以至于不能够顺利地按时完成任务.(= He did not work so hard that he failed to complete his mission on time.)
为您推荐:
其他类似问题
如果硬换的话把so.. as to中间的那个词或短语换成否定比如so popular as to become换成 so unpopular as to become但是可以找到替换用 too... to句型
so as not to
扫描下载二维码

我要回帖

更多关于 js quot 的文章

 

随机推荐