标签: sql-server

将SQL保存在存储过程与代码中的优缺点是什么

在您的C#源代码或存储过程中保留SQL有哪些优点/缺点?我一直在与一位朋友讨论我们正在开发的一个开源项目(C#ASP.NET论坛).目前,大多数数据库访问都是通过在C#中构建SQL内联并调用SQL Server DB来完成的.所以我试图确定哪个特定项目最好.

到目前为止,我有:

代码中的优点:

  • 易于维护 - 无需运行SQL脚本来更新查询
  • 更容易移植到另一个数据库 - 没有移动到端口

存储过程的优点:

  • 性能
  • 安全

c# sql sql-server stored-procedures

274
推荐指数
17
解决办法
7万
查看次数

SQL varchar列长度的最佳实践

每次都设置一个新的SQL表或varchar向现有表添加一个新列,我想知道一件事:什么是最好的值length.

所以,比方说,你有一个名为nametype 的列varchar.所以,你必须选择长度.我想不出一个名字> 20个字符,但你永远不会知道.但不是使用20,而是总是向下舍入到下一个2 ^ n数字.在这种情况下,我会选择32作为长度.我这样做,因为从计算机科学家的角度来看,数字2 ^ n看起来even比其他数字更多,我只是假设下面的架构可以比其他更好地处理这些数字.

另一方面,当您选择创建varchar列时,MSSQL服务器将默认长度值设置为50.这让我想到了.为什么50?它只是一个随机数,还是基于平均列长,或者是什么?

它也可能 - 或者可能是 - 不同的SQL服务器实现(如MySQL,MSSQL,Postgres,...)具有不同的最佳列长度值.

mysql sql sql-server postgresql

273
推荐指数
7
解决办法
21万
查看次数

如何查看活动的SQL Server连接?

我正在使用SQL Server 2008 Enterprise.我想看到任何活动的SQL Server连接,以及所有连接的相关信息,例如从哪个IP地址连接到哪个数据库或其他东西.

是否存在解决此问题的命令?

sql sql-server sql-server-2008

272
推荐指数
8
解决办法
94万
查看次数

使用SQL Server中的"Pivot"将行转换为列

我已经阅读了MS数据透视表上的内容,但我仍然遇到问题.

我有一个正在创建的临时表,我们会说第1列是商店号,第2列是周数,最后第3列是某种类型的总和.周数也是动态的,商店数是静态的.

Store      Week     xCount
-------    ----     ------
102        1        96
101        1        138
105        1        37
109        1        59
101        2        282
102        2        212
105        2        78
109        2        97
105        3        60
102        3        123
101        3        220
109        3        87
Run Code Online (Sandbox Code Playgroud)

我希望它作为一个数据透视表出来,像这样:

Store        1          2          3        4        5        6....
----- 
101        138        282        220
102         96        212        123
105         37        
109
Run Code Online (Sandbox Code Playgroud)

将数字存储在侧面,将数字存储在顶部.

sql sql-server pivot pivot-table

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

270
推荐指数
10
解决办法
27万
查看次数

SQL查询以选择两个日期之间的日期

我有一个start_dateend_date.我想获得这两个日期之间的日期列表.任何人都可以帮我指出我的查询中的错误.

select Date,TotalAllowance 
from Calculation 
where EmployeeId=1
  and Date between 2011/02/25 and 2011/02/27
Run Code Online (Sandbox Code Playgroud)

Date是一个datetime变量.

sql t-sql sql-server datetime sql-server-2005

270
推荐指数
9
解决办法
165万
查看次数

在SQL中选择CHAR over VARCHAR的用例有哪些?

我意识到如果我的所有值都是固定宽度的话,建议使用CHAR.但是,那又怎样?为什么不为所有文本字段选择VARCHAR只是为了安全.

sql t-sql sql-server

269
推荐指数
10
解决办法
16万
查看次数

如何检查表中是否存在某个索引?

像这样的东西:

SELECT
* 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_NAME ='FK_TreeNodesBinaryAssets_BinaryAssets'
and TABLE_NAME = 'TreeNodesBinaryAssets'
Run Code Online (Sandbox Code Playgroud)

但对于索引.

sql-server

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

如何在SQL Server中使用单个ALTER TABLE语句删除多个列?

我想编写一个SQL命令来从一个ALTER TABLE语句中删除单个表中的多个列.

来自MSDN的ALTER TABLE文档 ......

DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Run Code Online (Sandbox Code Playgroud)

指定从表中删除constraint_name或column_name.如果兼容级别为65或更早,则不允许使用DROP COLUMN.可以列出多个列和约束.

它说mutliple列可以在语句中列出,但语法不显示可选的逗号或任何甚至暗示语法的东西.

我应该如何编写SQL以在一个语句中删除多个列(如果可能)?

sql t-sql sql-server alter

269
推荐指数
5
解决办法
36万
查看次数

如何在SQL Server中存储十进制值?

我试图找出SQL Server中列的十进制数据类型.我需要能够存储15.5,26.9,24.7,9.8等值

我分配decimal(18, 0)了列数据类型,但这不允许我存储这些值.

这样做的正确方法是什么?

sql sql-server types decimal

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