标签: sql-server-2008

是一种无效的类型,可用作索引中的键列

我有一个错误

Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
Run Code Online (Sandbox Code Playgroud)

其中key是nvarchar(max).一个快速谷歌发现了这一点.然而,它并没有解释什么是解决方案.我如何创建像Dictionary这样的键,其中键和值都是字符串,显然键必须是唯一的并且是单一的.我的sql语句是

create table [misc_info] (
[id] INTEGER PRIMARY KEY IDENTITY NOT NULL,
[key] nvarchar(max) UNIQUE NOT NULL,
[value] nvarchar(max) NOT NULL);
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

164
推荐指数
4
解决办法
10万
查看次数

如何删除SQL Server数据库中的所有表?

我正在尝试编写一个完全清空SQL Server数据库的脚本.这是我到目前为止:

USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'
Run Code Online (Sandbox Code Playgroud)

当我在Management Studio中运行它时,我得到:

命令已成功完成.

但是当我刷新表格列表时,它们仍然存在.我究竟做错了什么?

sql-server ssms sql-server-2008 sp-msforeachtable

163
推荐指数
12
解决办法
23万
查看次数

SQL Server主体"dbo"不存在,

我收到以下错误

Cannot execute as the database principal because the principal "dbo" 
does not exist, this type of principal cannot be impersonated,
or you do not have permission.
Run Code Online (Sandbox Code Playgroud)

我读到了ALTER AUTHORIZATION,但我不知道这是发生了什么数据库.这个错误很频繁地吐出来,并且每天将错误日志增加大约1GB.

sql-server-2008

162
推荐指数
7
解决办法
15万
查看次数

从服务器接收结果时发生传输级错误

我收到一个SQL Server错误:

从服务器接收结果时发生传输级错误.(提供者:共享内存提供者,错误:0 - 句柄无效.)

我正在运行Sql Server 2008 SP1,Windows 2008 Standard 64位.

这是一个.Net 4.0 Web应用程序.它发生在向服务器发出请求时.这是间歇性的.知道我怎么解决它?

sql-server-2008

161
推荐指数
8
解决办法
22万
查看次数

如何在SQL Server 2008中创建复合主键

我想在SQL Server 2008中创建表,但我不知道如何创建复合主键.我怎样才能做到这一点?

sql sql-server-2008

161
推荐指数
5
解决办法
31万
查看次数

如何按小时或10分钟分组

就像我一样

SELECT [Date]
  FROM [FRIIB].[dbo].[ArchiveAnalog]
  GROUP BY [Date]
Run Code Online (Sandbox Code Playgroud)

我该如何指定小组期?

MS SQL 2008

第二次编辑

我尝试着

SELECT MIN([Date]) AS RecT, AVG(Value)
  FROM [FRIIB].[dbo].[ArchiveAnalog]
  GROUP BY (DATEPART(MINUTE, [Date]) / 10)
  ORDER BY RecT
Run Code Online (Sandbox Code Playgroud)

将%10更改为/ 10.是否可以在没有毫秒的情况下进行日期输出?

sql t-sql group-by sql-server-2008

159
推荐指数
7
解决办法
28万
查看次数

如何通过除以两个整数值来获得浮点结果?

当我在2个整数之间进行除法时,我想指定小数位数,如:

select 1/3
Run Code Online (Sandbox Code Playgroud)

目前返回0.我希望它能回来0,33.

就像是:

select round(1/3, -2)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我怎样才能达到预期的效果?

sql-server rounding division sql-server-2008

159
推荐指数
6
解决办法
27万
查看次数

如何使用SQL Server 2008执行多个CASE WHEN条件?

我想要做的是为同一列使用多个CASE WHEN条件.

这是我的查询代码:

   SELECT   Url='',
            p.ArtNo,
            p.[Description],
            p.Specification,
            CASE 
            WHEN 1 = 1 or 1 = 1 
               THEN 1 
               ELSE 0 
            END as Qty,
            p.NetPrice,
            [Status] = 0
      FROM  Product p (NOLOCK)
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是对同一列"qty"使用多个WHEN.

如下面的代码所示:

IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

156
推荐指数
4
解决办法
76万
查看次数

OPTION(RECOMPILE)总是更快; 为什么?

我遇到了一个奇怪的情况,附加OPTION (RECOMPILE)到我的查询导致它在半秒内运行,而省略它会导致查询花费超过五分钟.

从查询分析器或我的C#程序执行查询时就是这种情况SqlCommand.ExecuteReader().打电话(或不打电话)DBCC FREEPROCCACHEDBCC dropcleanbuffers没有任何区别; 查询结果总是立即返回,OPTION (RECOMPILE)如果没有它,则会超过五分钟.始终使用相同的参数调用查询[为了此测试].

我正在使用SQL Server 2008.

我对编写SQL OPTION非常熟悉,但之前从未在查询中使用过命令,并且在扫描此论坛上的帖子之前不熟悉计划缓存的整个概念.我从这些帖子中了解到,这OPTION (RECOMPILE)是一项昂贵的操作.它显然为查询创建了一个新的查找策略.那么为什么然后,省略它的后续查询OPTION (RECOMPILE)是如此之慢?后续查询是否应该使用在前一次调用中计算的查找策略,其中包括重新编译提示?

拥有一个需要在每次调用时重新编译提示的查询是否非常不寻常?

对于入门级问题我很抱歉,但我无法真正做到这一点.

更新:我被要求发布查询...

select acctNo,min(date) earliestDate 
from( 
    select acctNo,tradeDate as date 
    from datafeed_trans 
    where feedid=@feedID and feedDate=@feedDate 

    union 

    select acctNo,feedDate as date 
    from datafeed_money 
    where feedid=@feedID and feedDate=@feedDate 

    union 

    select acctNo,feedDate as date 
    from datafeed_jnl 
    where feedid=@feedID and feedDate=@feedDate 
)t1 
group by t1.acctNo
OPTION(RECOMPILE)
Run Code Online (Sandbox Code Playgroud)

从查询分析器运行测试时,我预先添加以下行:

declare @feedID int
select @feedID=20

declare …
Run Code Online (Sandbox Code Playgroud)

sql sql-server compilation hint sql-server-2008

156
推荐指数
3
解决办法
17万
查看次数

如何在SQL Server 2008中检查用户定义表类型的存在?

我有一个用户定义的表类型.我想在使用OBJECT_ID(name, type)函数编辑补丁之前检查它是否存在.

什么type枚举应传递用户定义的表类型?

N'U' 喜欢用户定义的表不起作用,即 IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

sql t-sql sql-server user-defined-types sql-server-2008

154
推荐指数
5
解决办法
10万
查看次数