这是我的简化方案:
我在SQL Server 2005中有一个表,其中包含单列类型varchar(500)
.列中的数据总是350个字符.
当我在SSMS查询编辑器中运行select时,将结果集复制并粘贴到文本文件中,文件中的行长为350,与实际数据长度匹配.
但是当我使用sqlcmd
与-o
参数,生成的文件具有线长500,其中的最大长度相匹配varchar(500)
.
所以问题是,如果不使用任何字符串函数select
,有没有办法让我们sqlcmd
知道不要对待它char(500)
?
我对此有点陌生。好奇在以下情况下会发生什么?
var q = //MY LINQ TO SQL QUERY.Select(...)
.........
.........
var c = q.Count();
.........
.........
var x = q.Where(....).Select(....);
var y = x.ToList();//or something such that forces materialization
var d = q.Count();//same as c
var e = x.Count();
var f = y.Count();
Run Code Online (Sandbox Code Playgroud)
sql 语句实际上访问了数据库多少次?一次在 Count() 处。再次在 Where()?或者 Linq 保留它在 Count() 期间实现的内容?
或者它还取决于 Where(..) 有什么?就像它是否再次引用数据库与它只是引用作为 'q'/ 或任何其他 .net 集合等的一部分获得的内容一样?
编辑:
用其他几个场景更新了我的代码。请在下面更正我的答案:
q -no db trip
c -yes, but translates to aggregate qry - select Count(*) and not a result …
Run Code Online (Sandbox Code Playgroud) 我已经使用了很长时间了,但我找不到明确解释它何时不能保证唯一.以下是我的意见,请您认为合适.
保证值在创建它的机器上是唯一的(创建).因此,.net app在计算机上生成的GUID永远不会与SQL Server在同一台计算机上创建的GUID冲突.
在所有其他情况下,无法保证.从理论上讲,如果在不同计算机上的数据库中有唯一标识符字段的多个创建源(比如不同计算机上的应用程序),则总是可能存在重复项.
编辑:道歉没有正确形成问题.我想我想知道在不同机器上生成冲突的可能性,如果使用c#Guid.NewGuid()
,SQL Server newid()
,newsequentialid()
函数或不同应用程序的任何其他函数."已经回答"的链接有一个回复,其中说它实际上遇到了发生这种情况的案例.让你想知道这种情况经常发生的频率.
如果我有一个带有uniqueidentifier字段的表作为pk,我是否应该担心每次通过不同的应用程序或SQL Server的函数创建新值来检查唯一性?
环境:Windows 7,Java 6.
尝试使用-cp选项编译.java文件.该文件使用当前目录中的单个jar文件ALONG与当前目录中的其他一些jar文件.
javac -cp ./*.jar MyFile.java
Run Code Online (Sandbox Code Playgroud)
不起作用.
javac -cp ./* MyFile.java
Run Code Online (Sandbox Code Playgroud)
不起作用
javac -cp ./MyJar.jar MyFile.java
Run Code Online (Sandbox Code Playgroud)
作品
前两种情况,我得到一个无效的标志错误.有人可以解释这种行为吗?
我检查是否是空格问题,我的完整文件路径中没有任何空格.
我陷入了混乱,想看看我是否可以摆脱它.我有一个数据库,其中包含在uniqueidentifier列上定义的表上的所有主键.这有点强加于我们,将"安全"作为其中一个原因.另一个我认为比较有价值的原因是有些表参与复制.
我正在审查数据库,我觉得一个容易避免的未来性能瓶颈是可能在所有表中添加自动增量bigint列并使它们成为主键(群集).并以某种方式'正确地'附加'pk-fk关系.但仍保留旧列以供将来使用.
有关这方面的任何建议/意见/建议吗?我们是ac#/ MSSQL Server R2/Linq环境.
编辑: 看看评论,我意识到我遗漏了一些重要的细节.所有主键Guid字段都是Clustered,我不使用newsequentialId(我们使用Linq to SQL,主键是客户端生成的.由于涉及复制,我们不确定如何从不同的客户端环境正确生成顺序ID冲突).
我的"感觉"是由于已知的事实,guid列上的聚簇索引将导致高度碎片,并且只会随着数据库的增长而恶化这种情况.
此外,我现在并没有真正尝试优化,而是尝试纠正一个糟糕的设计,以避免在数据库变得太大时未来的麻烦.想知道现在是否值得这样做.
无法正确表达问题,因此无法搜索我想要的内容。我所需要的只是一个带有一列say guids的虚拟表,我将它用于其他目的。没有实际写相同的insert .. newID()
n 次,想知道是否有一个优雅的解决方案。
类似的问题是如何用一个 int 列填充一个空白表,比如 1-n 个数字。
Row1: 1
Row2: 2
.......
Row100:100
Run Code Online (Sandbox Code Playgroud) 我是一个Log4Net新手,试图基本/安全地了解它是如何工作的.如果我将Logger配置为FileAppender,并且我有多个语句,如下所示,一个接一个:
this.GetLogger().Info("...");
this.GetLogger().Error("....");
Run Code Online (Sandbox Code Playgroud)
每个调用是否实际打开文件,写入字符串并关闭它?每次?或者还有其他什么吗?我想知道何时使用文件资源.它是如何工作的?
下面的伪代码好吗?我只是想知道在DataContext之外返回是否总是更好.
public object returnObjectFromDB () {
using(var mydatacontext = new Mydatacontext())
{
return someobject;
}
}
Run Code Online (Sandbox Code Playgroud) 在给定表名的情况下,我无法使用逗号分隔的列名列表.任何参考文献表示赞赏
所以我的最终结果应该是oracle中的一个sql语句,在运行时,会给我一个逗号分隔的给定表中的列名列表.(所以我可以将列表粘贴到别处)
编辑:
所以如果我的表看起来像这样:table1(fieidl1,field2,field3)
我希望得到像"field1,field2,field3"这样的字符串
所以我可以插入一个单独的sql语句来按顺序从表中选择字段.
关于DEFERRED EXECUTION,以下评论是否正确?
1. var x = dc.myTables.Select(r=>r);//yes
2. var x = dc.myTables.Where(..).Select(r=>new {..});//yes
3. var x = dc.myTables.Where(..).Select(r=>new MyCustomClass {..});//no
Run Code Online (Sandbox Code Playgroud)
换句话说,我一直认为投射自定义类对象总是会导致急切的执行.但是我找不到支持/否认它的引用(虽然我看到的结果与它相矛盾,因此帖子)
有人可以指点我理解ssl证书的"密钥使用"属性的好文章吗?使用"数据加密"作为其中一个值获得证书的利弊是什么?
这是推荐的吗?最近,我们必须在我们的网站上托管一个Web服务,供第三方使用,其中一个要求是证书必须在"密钥使用"中具有"数据加密".目前我们的网站已经有ssl,但密钥用法没有'数据加密'.
如果我们购买带有数据加密的新证书并用新的证书替换当前的站点证书,会不会有明显的缓慢?
c# ×4
linq-to-sql ×3
sql-server ×3
.net ×1
https ×1
java ×1
javac ×1
linq ×1
log4net ×1
oracle ×1
sqlcmd ×1
sqldatatypes ×1
ssl ×1
t-sql ×1