标签: sql-server-2012

更好的SQL分页技术

有没有更好的方法在SQL服务器中进行分页?

例如,我必须使用以下技术将@skip添加到@take:

;WITH tmp_cte AS (
 SELECT ROW_NUMBER() OVER (ORDER BY LastName) AS RowNumber,
        LastName, 
        FirstName
   FROM person.Person
  WHERE FirstName like '%ad%'
)
SELECT * 
FROM tmp_cte 
WHERE RowNumber > @skip --10 
AND RowNumber <= @Take--20
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法,以便我不必添加跳过?

sql sql-server sql-server-2012

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

sql server高索引用法

我使用SQL Server 2012并在我的数据库中有一个表,其中包含10行,通常在sql server profiler中没有查询.但是当我dm_db_index_usage_stats用于索引的调查使用时,该表的主键索引具有高user_updateuser_seek.

我不知道为什么这个索引有很高的更新和寻求.

此未使用表的平均更新大约是每分钟1000次更新.

编辑

此表没有与另一个表的任何外键,并且没有任何依赖项.

我认为这个问题是sql server中的一个bug.

编辑2

当我删除并重新创建此表并再次在其上插入数据时,此表的索引使用情况不会更改.

我想也许存在一些像这样的表(没有用法,并且有索引更新和索引查找).

编辑3

我在这个表上写了一个更新后的触发器,并将更新的记录保存到另一个表(JohnLBevan suggest)但不要在新表上插入任何记录,这意味着该触发器不会运行.但索引user_seek和索引user_update仍然改变.我坚信这个问题是SQL Server中的一个错误.但我不知道这些更新和寻求对性能有效.

编辑4

我使用下面的代码来获取索引用法:

SELECT *
From
(SELECT  DB_NAME(ddius.database_id)AS DatabaseName, OBJECT_NAME(ddius.object_id) AS object_name , 
       CASE 
        WHEN ( SUM(user_updates + user_seeks + user_scans + user_lookups) = 0 ) 
        THEN NULL 
        ELSE ( CAST(SUM(user_seeks + user_scans + user_lookups) AS DECIMAL) 
                    / CAST(SUM(user_updates + user_seeks + user_scans 
                               + user_lookups) AS DECIMAL) ) 
        END AS RatioOfReads , 
       CASE …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

SQL:IS NULL不起作用

我正在尝试测试变量是否为null但我似乎有语法错误,我的代码是:

DECLARE @count1 INT

SET @count1 = 
(SELECT HPlayedHome FROM League WHERE GameID = 
(SELECT TOP 1 GameID From Goals WHERE Date <= '20130923' AND Home = 'Palermo'
AND (GameID >=2551 AND GameId <= 5100) ORDER BY Date Desc))

SELECT CASE @count1 IS NULL THEN 0 ELSE @count1 END
Run Code Online (Sandbox Code Playgroud)

我希望查询返回@ count1的值,但如果它的NULL返回0. SQL SERVER 2012突出显示IS上的语法错误,'IS附近的语法不正确'.

t-sql sql-server sql-server-2012

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

如何在SQL Server 2012中进行条件右连接?

假设我有两张这样的桌子

在此输入图像描述

现在我想要做正确的加入Menu_TableMenu_access_Table.

我想从中获取所有行Menu_Table.

SELECT
*
FROM
    Menu_Table
RIGHT JOIN 
    Menu_Access_Table ON Menu_Table.menu_id = Menu_Access_Table.menu_id
WHERE
    Menu_Access_Table.user_id=11
Run Code Online (Sandbox Code Playgroud)

如果user_id=11我下面没有条目,我仍然希望从中获取所有行Menu_Table!可能吗?我正在使用SQL Server 2012.

sql join sql-server-2012

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

存储PDF和图像:nvarchar(max)与varbinary(max)

我们正在设计一个数据库,需要在表格中存储各种版本的文件(pdf/image /缩小图像).由于某种原因选择使用Filestream的权力,所以这不是辩论.

我似乎无法在网上找到任何指示用于存储pdf和图像数据的适当数据类型的内容.那个或者我在寻找它时只是一个完全白痴.

我不打算开始辩论,所以我不是在寻找自以为是的回答.但是我试图找出一个或另一个是否真的是为我想做的事而设计的.如果其中任何一个都有用,那就是我需要知道的.

sql-server-2012

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

读取列值的一部分

我有以下SQL Server 2012表:

create table dbo.Packs {
  Id int identity not null,
  Info nvarchar (200) not null
}
Run Code Online (Sandbox Code Playgroud)

如何获取Info以"File"开头的所有行...我可能有:

"File #200 View", "File #100 Delete", "Stat F#20"
Run Code Online (Sandbox Code Playgroud)

所以我会得到前两个记录.

谢谢你,米格尔

sql sql-server-2012

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

相同的SQL语句给出不同的结果

我从视图中选择了行(视图中的where子句在静态数据上).如果我运行下面的SQL,我每次都会得到相同的结果.我希望recordsIds是相同的,并且顺序相同,但它们完全不同!

我正在使用SQL SEVER 2012.谁能解释为什么这个结果有所不同?

sql server的屏幕转储

sql sql-server sql-server-2012

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

从文件路径中提取文件名之前的文件夹名称

如何提取文件名前面的文件路径的文件夹名称?

例:

declare @a varchar(200)
set @a = '/path/to/category1/filename.txt'
select right(@a, charindex('/', reverse(@a)) - 1)
Run Code Online (Sandbox Code Playgroud)

这将返回filename.txt - 在另一列中,我现在想要获取"category1"文件夹名称.如果路径更改为: set @b = '/path/to/another/folder/category2/filename.txt' 它应提取category2.

sql t-sql sql-server sql-server-2012

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

> = GETDATE()没有返回具有今天日期的行

---------------------
| ID  |     date    |
|-----+-------------|
|  1  |  2013-12-30 |
|  2  |  2014-01-03 |
|  3  |  2014-02-02 |
---------------------
Run Code Online (Sandbox Code Playgroud)

IDint类型

dateDate类型

当我使用时SELECT CAST (getdate() as date) currentDay, ID FROM table WHERE date >= GETDATE(),它只返回:

--------------------------------------
|  currentDay   |  ID  |     date    |
|---------------+------+-------------|
| 2013-12-30    |   2  |  2014-01-03 |
| 2013-12-30    |   3  |  2014-02-02 |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

它没有返回行ID=1.

换句话说,>=GETDATE()不返回具有今天日期的行.

我做错了什么?

sql sql-server getdate sql-server-2012

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

存储过程在C#与SQL Server中返回不同的值

我有一个带参数@id int OUTPUT 的存储过程(sql server 2012)该过程向数据库表中插入一些数据并返回受影响行的ID

SET @id=SCOPE_IDENTITY()
RETURN @id
Run Code Online (Sandbox Code Playgroud)

我从SQL Server测试它,它工作正常.但是当我从C#调用它时:它确实将数据插入到表中,但返回null:

SqlParameter parm = new SqlParameter("@id", SqlDbType.Int);
parm.Size = 32;
parm.Direction = ParameterDirection.Output; // This is important!
cmd.Parameters.Add(parm);
object id = (int?)cmd.ExecuteScalar();//<-null
Run Code Online (Sandbox Code Playgroud)

请指出导致这种奇怪行为的原因是什么?

c# sql sql-server stored-procedures sql-server-2012

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

标签 统计

sql-server-2012 ×10

sql ×7

sql-server ×7

t-sql ×2

c# ×1

getdate ×1

join ×1

stored-procedures ×1