Tag: sql server

C#等价于SQL Server数据types

对于以下SQL Server数据types,C#中相应的数据types是什么? 精确的数字 bigint numeric bit smallint decimal smallmoney int tinyint money 近似数字 float real date和时间 date datetimeoffset datetime2 smalldatetime datetime time string char varchar text Unicode字符string nchar nvarchar ntext 二进制string binary varbinary image 其他数据types cursor timestamp hierarchyid uniqueidentifier sql_variant xml table (来源: MSDN )

如何清除SQL Server事务日志?

我不是一个SQL专家,每当我需要做一些超出基本的事情时,我都会想起这个事实。 我有一个不大的testing数据库,但事务日志肯定是。 如何清除交易logging?

获取数据库中所有表的大小

我已经inheritance了一个相当大的SQL Server数据库。 考虑到它包含的数据,它似乎占用了比我预期更多的空间。 有没有一种简单的方法来确定每个表上的磁盘空间消耗多less?

列“在select列表中无效,因为它不包含在聚合函数或GROUP BY子句中”

我想在我的下面的SQL显示列B ,但是当我将它添加到查询它给我以下错误: 列T2.B'在select列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 我的代码: SELECT A, COUNT(B) as T1, B FROM T2 WHERE ID=1 GROUP BY A

如何将单列值分割为多个列值?

我有一个问题,将单列值分成多个列值。 例如: Name ———— abcd efgh ijk lmn opq asd j. asdjja asb (asdfas) asd asd 我需要这样的输出: first_name last_name ———————————- abcd efgh ijk opq asd asdjja asb asd asd null 中间名称可以省略(不需要中间名称)列已经创build,需要插入单个Name列中的数据。

使用entity framework从存储过程获取数据

我试图从数据库上下文对象(使用Entity Framework 6.1.1)调用dynamicSQL存储过程来获取内容的表,以填充GridView控件。 我无法检索数据。 这是存储过程。 这是一个关于存储过程中的SQL注入的学生演示,所以我知道这是可注射的,没关系。 ALTER PROCEDURE dbo.SearchProducts @SearchTerm VARCHAR(max) AS BEGIN DECLARE @query VARCHAR(max) SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%''' EXEC(@query) END 我后面用来执行存储过程的C#代码是: var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.SearchProducts(TEST_SEARCH_TERM); MyGridView.DataSource = result; MyGridView.DataBind(); 执行时,在Visual Studio的数据库资源pipe理器中,存储过程正常工作。 但是当在正在运行的ASP.NET应用程序中执行时,我在DataBind()方法中得到一个exception,因为result返回-1而不是包含存储过程的SELECT产生的对象的IEnumerable DataSet […]

限制WHERE col IN(…)条件

我使用下面的代码: SELECT * FROM table WHERE Col IN (123,123,222,….) 但是,如果我在IN子句中放入超过3000个数字,SQL会引发错误。 有谁知道是否有一个大小限制或类似的东西?

连接/聚合string的最佳方式

我正在find一种方法来将不同行中的string聚合成一行。 我正在寻找在许多不同的地方这样做,所以有一个function,以促进这将是很好的。 我已经尝试了使用COALESCE和FOR XML解决scheme,但是他们并没有为我裁剪。 string聚合会做这样的事情: id | Name Result: id | Names — – —- — – —– 1 | Matt 1 | Matt, Rocks 1 | Rocks 2 | Stylus 2 | Stylus 我已经看了CLR定义的聚合函数来代替COALESCE和FOR XML ,但显然SQL Azure 不支持CLR定义的东西,这对我来说是一个痛苦,因为我知道能够使用它会解决很多问题给我。 是否有任何可能的解决方法,或类似的最佳方法(可能不如CLR最佳,但嘿,我会拿我能得到的),我可以用来聚合我的东西?

将多个子查询中的结果组合成一个逗号分隔值

我有两张桌子: TableA —— ID, Name TableB —— ID, SomeColumn, TableA_ID (FK for TableA) 这个关系是TableA一行 – 很多TableB 。 现在,我想看到这样的结果: ID Name SomeColumn 1. ABC X, Y, Z (these are three different rows) 2. MNO R, S 这将无法正常工作(子查询中有多个结果): SELECT ID, Name, (SELECT SomeColumn FROM TableB WHERE F_ID=TableA.ID) FROM TableA 这是一个微不足道的问题,如果我在客户端进行处理。 但这意味着我将不得不在每个页面上运行X查询,其中X是TableA的结果数。 请注意,我不能简单地做一个GROUP BY或类似的东西,因为它会为TableA行返回多个结果。 我不确定使用COALESCE或类似的东西的UDF是否可行?

NOLOCK(SQL Server提示)不好的做法?

我在做网站和应用程序不是任务关键 – 例如。 银行软件,太空飞行,重症监护应用程序等等。你明白了。 那么,在这个庞大的免责声明中,在某些Sql语句中使用NOLOCK提示是不是很糟糕? 几年前,一位Sqlpipe理员build议,如果我对“脏读”感到满意,那么我应该使用NOLOCK,这将使我的系统性能提高一倍,因为每次读取都不会locking表/行/不pipe。 我也被告知,如果我遇到死锁,这是一个很好的解决scheme。 所以,我开始思考了几年,直到一个Sql guru帮我一些随机代码,并注意到我的sql代码中的所有NOLOCKS。 我被礼貌地骂了,他试图向我解释(为什么这不是一件好事),我有点失落。 我觉得他的解释的本质是“这是一个更严重的问题的创可贴解决scheme,特别是如果你遇到了僵局。 因此,解决问题的根源“。 我最近做了一些Googlesearch,碰到这个post 。 那么,可以一些sql db guru sensei的请赐教吗?