标签: sql-server-2012-express

删除大量记录需要花费很长时间

我有一个包含约60,000行的数据库表(在SQL Server 2012 Express上运行).

我使用以下代码清除旧行:

//Deleting CPU measurements older than (oldestAllowedTime)
var allCpuMeasurementsQuery = from curr in msdc.CpuMeasurements where 
    curr.Timestamp < oldestAllowedTime select curr;
foreach (var cpuMeasurement in allCpuMeasurementsQuery)
{
  msdc.CpuMeasurements.Remove(cpuMeasurement);
}
Run Code Online (Sandbox Code Playgroud)

当删除的行数很大(删除表中约90%或更多的记录)时,操作需要特别长的时间.在相对较强的机器(Intel I5台式机)上完成此操作大约需要30分钟.

  1. 这看起来像一个正常的行为吗?

  2. 关于我可以做些什么来减少操作时间的任何想法?

谢谢,

c# linq database optimization sql-server-2012-express

14
推荐指数
3
解决办法
1601
查看次数

如何防止'查询超时过期'?(SQLNCLI11错误'80040e31')

我在经典ASP(VBScript)中连接到MS SQL Server 2012数据库.这是我的连接字符串:

Provider=SQL Server Native Client 11.0;Server=localhost;
Database=databank;Uid=myuser;Pwd=mypassword;
Run Code Online (Sandbox Code Playgroud)

当我执行此SQL命令时:

UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',
[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,
[updated]=1,[findable]=0 
WHERE [ID]=193246;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Microsoft SQL Server Native Client 11.0 
error '80040e31'
Query timeout expired   
/functions.asp, line 476
Run Code Online (Sandbox Code Playgroud)

SQL查询很长,数据字段更新为12533个字符.ID列已编入索引,因此查找ID为193246的帖子应该很快.

当我在SQL Server Management Studio上执行完全相同的SQL表达式(复制和粘贴)时,它立即成功完成.什么都没有问题.所以SQL本身没有问题.我甚至尝试过使用ADODB.Recordset对象并通过它更新(没有自编SQL),但我仍然得到相同的超时错误.

如果我在Management Studio中转到工具>选项>查询执行,我会看到执行超时设置为0(无限).在工具>选项>设计器下,我看到事务超时设置为30秒,因为脚本和数据库在同一台计算机上("localhost"在连接字符串中),所以应该足够了.

这里发生了什么?为什么我可以在Management Studio中执行SQL而不是在我的ASP代码中执行?


编辑:尝试将设计师选项卡中的30秒超时设置为600秒,以确保,但我仍然得到相同的错误(在页面加载btw 30秒后发生).

这是我用来在ASP页面上执行SQL的代码:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=SQL Server Native Client 11.0;
Server=localhost;Database=databank;Uid=myuser;Pwd=mypassword;"
Conn.Execute "UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,[updated]=1,[findable]=0 
WHERE [ID]=193246;" …
Run Code Online (Sandbox Code Playgroud)

sql sql-server vbscript asp-classic sql-server-2012-express

13
推荐指数
1
解决办法
10万
查看次数

当红门的sql比较时,获取错误"commandtext属性尚未初始化"

当我将2个数据库与Red Gate的SQL比较时,然后得到以下错误."ExecuteReader:CommandText属性尚未初始化"

我正在使用SQL Server 2012 express和Red Gate的SQL Compare 8

有什么解决方案吗?

谢谢,

sql redgate sqlcompare sql-server-2012-express

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

如何修复SQL Server 2012的Visual Studio错误"此服务器版本不受支持..."

我最近在Windows Server 2008 R2计算机上安装了Visual Studio 2010和SQL Server 2012(包括所有更新/ Service Pack).

尝试从Visual Studio中处理SQL Server数据库时,VS会引发以下错误:

不支持此服务器版本.仅支持最多Microsoft SQL Server 2008的服务器

我记得当我将SQL Server 2008实例更新到SQL Server 2008 R2时,一段时间(在另一台计算机上)得到同样的错误.当时的修复是安装(或重新安装)Visual Studio 2010 SP1.

现在我再次收到此错误(在新计算机上),我认为重新安装VS SP1就像我回过头一样.但是,这样做并没有解决问题.

似乎Visual Studio可能需要另一个更新来支持SQL Server 2012实例.

为清楚起见,以下是我为产生错误所采取的步骤:(使用VS 2010sp1和SQL2012)

  1. 使用VS,创建Windows窗体应用程序
  2. 右键单击该项目,然后选择"添加">"新建项"
  3. 选择"基于服务的数据库"
  4. 取消"数据源配置向导"
  5. 数据库将显示在解决方案资源管理器中的项目下.双击新数据库
  6. 数据库将添加到Server Explorer的数据连接列表中
  7. 在Server Explorer中,打开数据库,右键单击Tables目录,然后选择"Add New Table"
  8. 抛出错误"不支持此服务器版本...."

任何它的价值的屏幕截图.. 在此输入图像描述 在此输入图像描述

我的问题是,有没有解决这个问题?如果是这样,它是什么?

sql-server visual-studio visual-studio-2010-sp1 sql-server-2012 sql-server-2012-express

11
推荐指数
1
解决办法
5万
查看次数

在Visual Studio中创建与MDF文件的连接:"文件正在使用中"

介绍

我是Entity Framework的新手,并且设置了正确的SQL Server.

我正在遵循正式的实体框架教程,而我正在"创建数据库" - 页面下约30%.

重现问题的步骤

将School.mdf文件从以下文件夹复制到应用程序的App_Data文件夹

而不是使用School.mdf我正在使用我自己的文件的文件,该文件是使用SQL Server Management Studio(我从Microsoft下载中心下载,选择ENU\x86\SQLEXPRADV_x86_ENU.exe选项)自动创建的,以创建包含表的数据库.

在Visual Studio 2010 Ultimate中,我:

  1. 转到Server Explorer并右键单击Data Connections- > Add Connection:

  2. 选择Microsoft SQL Server Database File数据源的选项,然后按Continue.

  3. 点击Browse...下面Database file name.

  4. 选择目录中的%PROGRAMFILES%\Microsoft SQL Server\MSSQL11.MOBILIZEMESQL\MSSQL\DATA文件,因为它是保存的位置.

  5. 得到错误.

图片版本:

1.

添加数据库连接步骤1

2.

添加数据库连接步骤2

3.

添加数据库连接步骤3

问题

我收到错误消息:

DateBaseName.mdf
This file is in use.
Enter a new name or close the file that's …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework database-connection visual-studio-2010 sql-server-2012-express

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

SQL Server 2012序列

我创建一个表和序列,以便替换我使用SQL Server 2012 Express的表中的标识,但是当我尝试将数据插入表时,我收到此错误

消息11719,级别15,状态1,行2
NEXT VALUE FOR函数不允许在检查约束,默认对象,计算列,视图,用户定义函数,用户定义聚合,用户定义表类型,子查询,公用表表达式或派生表.

T-SQL代码:

insert into Job_Update_Log(log_id, update_reason, jobid) 
values((select next value for Job_Log_Update_SEQ),'grammer fixing',39);
Run Code Online (Sandbox Code Playgroud)

这是我的表:

create table Job_Update_Log
(
   log_id int primary key  ,
   update_reason nvarchar(100) ,
   update_date date default getdate(),
   jobid bigint not null,
   foreign key(jobid) references jobslist(jobid)
);
Run Code Online (Sandbox Code Playgroud)

这是我的顺序:

CREATE SEQUENCE [dbo].[Job_Log_Update_SEQ] 
 AS [int]
 START WITH 1
 INCREMENT BY 1
 NO CACHE 
GO
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sequences sql-server-2012-express

9
推荐指数
2
解决办法
6064
查看次数

隐藏Microsoft Sql Server 2008R2及更高版本上的登录数据库

请任何人都可以协助隐藏sql server 2008R2或更新版本上的可用数据库.

我有一个新的登录用户,我映射到一个特定的数据库.使用特定登录用户登录时,我可以看到服务器上的所有数据库,但我无法访问它们,除了我映射到登录的那个.

这是100%但我的问题是我不希望登录甚至看到那些其他数据库可用.

如何防止未映射到登录的其他数据库显示?

sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012-express

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

在创建表后调用insert时出现"无效的列名"错误

我正在使用SSMS开发SQL脚本,它在数据库中进行了一些更改:

USE MyDatabase;

BEGIN TRANSACTION;

-- some statements

PRINT(N'#1');

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Table1' AND COLUMN_NAME = 'Table2_Id'))
BEGIN
    ALTER TABLE [dbo].[Table1] DROP CONSTRAINT [FK_Table1_Table2_Table2_Id];
    ALTER TABLE [dbo].[Table1] DROP COLUMN [Table2_Id];
    DROP TABLE [dbo].[Table2];

    PRINT(N'Table2 was dropped.');
END

PRINT(N'#2');

IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Table2'))
BEGIN
    CREATE TABLE [dbo].[Table2]
    (
        [Id] INT NOT NULL PRIMARY KEY IDENTITY,
        [Number] INT NOT NULL UNIQUE, …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012-express

8
推荐指数
1
解决办法
2万
查看次数

SQL Server 2012 Express备份数据库失败

我正在尝试备份我在SQL Server 2012 Express中创建的数据库.我右键单击数据库 - >任务 - >备份并假设正常默认值.

我得到的错误是这样的:

TITLE: Microsoft SQL Server Management Studio
------------------------------

Backup failed for Server 'JAMIE-PC\SQLEXPRESS'.  (Microsoft.SqlServer.SmoExtended)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Backup+Server&LinkId=20476

------------------------------
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: Cannot use the backup file 'C:\backup.bak' because it was originally formatted with sector size 4096 and is now on a device with sector size 512. (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------
Run Code Online (Sandbox Code Playgroud)

这对我来说并不意味着很多,但看起来可能像FAT32/NTFS风格的问题!尽管看起来与SQL Server 2012明显分离!我运行的版本是11.0.2100

sql-server sql-server-2012-express visual-studio-2012

8
推荐指数
1
解决办法
2万
查看次数

列出SQL中两个日期之间的所有工作日期

我有SQL代码来生成两个日期之间的日期列表,但我想从给定的两个日期生成工作日(工作日),

DECLARE @MinDate DATE = '20140101', @MaxDate DATE = '20140106';
SELECT TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
    Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1,@MinDate)
FROM sys.all_objects a
CROSS JOIN sys.all_objects b;
Run Code Online (Sandbox Code Playgroud)

这是我的代码,所以任何人都建议我单独获取工作日列表.在线资源有代码可以找到不列出所有日期的天数,这是我的困惑.

sql sql-server sql-server-2008 sql-server-2012-express

7
推荐指数
2
解决办法
3459
查看次数