我有一个包含约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分钟.
这看起来像一个正常的行为吗?
关于我可以做些什么来减少操作时间的任何想法?
谢谢,
我在经典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) 当我将2个数据库与Red Gate的SQL比较时,然后得到以下错误."ExecuteReader:CommandText属性尚未初始化"
我正在使用SQL Server 2012 express和Red Gate的SQL Compare 8
有什么解决方案吗?
谢谢,
我最近在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)
任何它的价值的屏幕截图..

我的问题是,有没有解决这个问题?如果是这样,它是什么?
sql-server visual-studio visual-studio-2010-sp1 sql-server-2012 sql-server-2012-express
我是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中,我:
转到Server Explorer并右键单击Data Connections- > Add Connection:
选择Microsoft SQL Server Database File数据源的选项,然后按Continue.
点击Browse...下面Database file name.
选择目录中的%PROGRAMFILES%\Microsoft SQL Server\MSSQL11.MOBILIZEMESQL\MSSQL\DATA文件,因为它是保存的位置.
得到错误.
图片版本:
1.

2.

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
我创建一个表和序列,以便替换我使用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 server 2008R2或更新版本上的可用数据库.
我有一个新的登录用户,我映射到一个特定的数据库.使用特定登录用户登录时,我可以看到服务器上的所有数据库,但我无法访问它们,除了我映射到登录的那个.
这是100%但我的问题是我不希望登录甚至看到那些其他数据库可用.
如何防止未映射到登录的其他数据库显示?
sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012-express
我正在使用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 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代码来生成两个日期之间的日期列表,但我想从给定的两个日期生成工作日(工作日),
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-server ×8
sql ×5
asp-classic ×1
c# ×1
database ×1
linq ×1
optimization ×1
redgate ×1
sequences ×1
sqlcompare ×1
t-sql ×1
vbscript ×1