标签: sql-server-2012

为什么"select count(*)"从没有返回1

使用SQL Server 2012:

use master
select *
Run Code Online (Sandbox Code Playgroud)

产量

必须指定要选择的表

这正是我所期待的.

但有趣的是

use master
select count(*)
Run Code Online (Sandbox Code Playgroud)

返回1.

有人可以向我解释这里算什么?

编辑:可能包括来源......

sql sql-server count sql-server-2012

21
推荐指数
1
解决办法
2169
查看次数

为什么SQL Server在事件日志中说"启动数据库",每秒两次?

我有一个SQL Server [2012 Express with Advanced Services]数据库,其中没有太多内容.我正在使用EF Code First开发一个应用程序,由于我的模型仍然处于不稳定状态,因此数据库每天都会被丢弃并重新创建几次.

今天早上,我的应用程序在第一次运行时无法连接到数据库.经过调查,似乎数据库处于"恢复待定"模式.

查看事件日志,我可以看到SQL Server已记录:

启动数据库(我的数据库)

......整晚大约每秒两次.(事件日志填满了,所以昨天晚上我看不到).

这些"信息"日志条目在今天早上6点左右停止,紧接着是"错误"日志条目,说:

资源池"internal"中没有足够的内存来运行此查询

我的数据库发生了什么事?

注意:我可能会让我的Web应用程序在"调试"模式下一夜之间运行 - 尽管没有任何人"驱动"它,我无法想象会有很多数据库流量,如果有的话.

还值得一提的是,我在数据库中有一个全文目录(尽管如我所说,目前数据库中几乎没有任何实际内容).

我不得不说,这很令人担忧 - 如果发生在我的生产数据库中,我会感到很高兴!

sql-server sql-server-2012

20
推荐指数
2
解决办法
4万
查看次数

偶尔获取SqlException:超时已过期

我在我的服务器上运行了应用程序.这个应用程序的问题是每天我得到近10-20,System.Data.SqlClient.SqlException Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding只有我的一个SP.这是我的SP,

            ALTER PROCEDURE [dbo].[Insertorupdatedevicecatalog] 
                            (@OS                NVARCHAR(50) 
                            ,@UniqueID          VARCHAR(500)
                            ,@Longitude         FLOAT 
                            ,@Latitude          FLOAT
                            ,@Culture           VARCHAR(10)
                            ,@Other             NVARCHAR(200)
                            ,@IPAddress         VARCHAR(50)
                            ,@NativeDeviceID    VARCHAR(50))
            AS 
            BEGIN 

                DECLARE @OldUniqueID VARCHAR(500) = '-1';
                SELECT @OldUniqueID = [UniqueID] FROM DeviceCatalog WHERE (@NativeDeviceID != '' AND [NativeDeviceID] = @NativeDeviceID);

                BEGIN TRANSACTION [Tran1]
                    BEGIN TRY
                        IF EXISTS(SELECT 1 FROM DeviceCatalog WHERE [UniqueID] = @UniqueID) 
                        BEGIN 
                            UPDATE  DeviceCatalog 
                               SET  [OS] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server asp.net ado.net sql-server-2012

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

在SQL Server 2012中获取总计数和分页的更好方法

我要求获取记录的总数和分页.目前我在SQL Server 2012中列出如下所示.这需要一个单独的查询来获取计数.SQL Server 2012中是否有任何改进的方法?

ALTER PROCEDURE dbo.tpGetPageRecords
(
    @OffSetRowNo INT,     
    @FetchRowNo INT,
    @TotalCount INT OUT
) 
AS 

SELECT CSTNO, CSTABBR 
FROM DBATABC
WHERE CSTABBR LIKE 'A%'
ORDER BY CSTNO
OFFSET ( @OffSetRowNo-1 ) * @FetchRowNo ROWS
FETCH NEXT @FetchRowNo ROWS ONLY

SET @TotalCount = 
(SELECT COUNT(*)
FROM DBATABC
WHERE CSTABBR LIKE 'A%')


GO
Run Code Online (Sandbox Code Playgroud)

sql-server pagination sql-server-2012

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

您只能在包含的数据库中创建具有密码的用户

我正在使用一个包含的数据库,在创建数据库之后我试图创建一个用户,但是我得到了错误:

您只能在包含的数据库中创建具有密码的用户

我的代码是:

sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'contained database authentication', 1
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
CREATE DATABASE [MyDb]
CONTAINMENT = PARTIAL
ON PRIMARY
( NAME = N'My', FILENAME = N'C:\My.mdf')
LOG ON
( NAME = N'My_log', FILENAME =N'C:\My_log.ldf')
Run Code Online (Sandbox Code Playgroud)
CREATE USER MyUser
WITH PASSWORD = 'pass@123';
GO
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

20
推荐指数
3
解决办法
2万
查看次数

动态地将文件名指定给excel连接字符串

这是我第一次在SQL Server 2012中使用SSIS.我可以成功读取excel文件并将其内容加载到SQL Server 2012中的表中.该任务是一个简单的直接读取excel文件,然后复制到sql server而没有验证或改造现在.任务很成功.但是当我试图让包从变量而不是原始的硬编码中读取文件名时,它产生了一个错误"DTS_E_OLEDBERROR.发生了OLE DB错误.错误代码:0x80040E4D"

在此输入图像描述

我所做的只是用一个表达式替换excel连接管理器中的硬编码连接字符串,该表达式获取由表达式指定的变量的值

在此输入图像描述

在数据流任务开始之前为变量分配了值.检查变量并确实具有正确的值.

在此输入图像描述

但是,当数据流任务开始时,会生成以下错误.

在此输入图像描述

如果有人能指出我做错了什么并建议我如何解决问题,我们将不胜感激.

ssis sql-server-2012

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

Sql server - 由于ACTIVE_TRANSACTION,日志已满

我有一个非常大的数据库(50+ GB).为了释放硬盘中的空间,我尝试从其中一个表中删除旧记录.我跑了命令:

delete from Table1 where TheDate<'2004-01-01';
Run Code Online (Sandbox Code Playgroud)

但是,SQL Server 2012说:

Msg 9002, Level 17, State 4, Line 1 
The transaction log for database 'MyDb' is full due to 'ACTIVE_TRANSACTION'.
Run Code Online (Sandbox Code Playgroud)

并没有删除任何东西.这条消息是什么意思?如何删除记录?

sql sql-server sql-server-2012

20
推荐指数
2
解决办法
17万
查看次数

从使用(WHERE)条件选择的行中获取上一行和下一行

例如,我有这样的声明:

my name is Joseph and my father's name is Brian
Run Code Online (Sandbox Code Playgroud)

此语句按字分割,如下表所示:

------------------------------
|      ID      |   word      |
------------------------------
|       1      |   my        |
|       2      |   name      |
|       3      |   is        |
|       4      |   Joseph    |
|       5      |   and       |
|       6      |   my        |
|       7      |   father's  |
|       8      |   name      |
|       9      |   is        |
|       10     |   Brian     |
------------------------------
Run Code Online (Sandbox Code Playgroud)

我想得到每个单词的上一个和下一个单词

例如,我想获得"name"的上一个和下一个单词:

--------------------------
|    my    |  name  |  is | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server rows sql-server-2012

20
推荐指数
3
解决办法
6万
查看次数

在SQL Server中更改数据时自动刷新应用程序

我使用SQL Server,我有3个应用程序服务器.当我的数据库中的表发生更改时,我需要向那些应用程序服务器刷新本地缓存的数据.我使用触发器来进行已知更改并通过服务代理队列发送消息.然后我创建一个存储过程并分配它来激活我的队列的存储过程,在这个存储过程中我收到消息,但我不知道如何在我的应用程序中调用refresh方法.

c# sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

19
推荐指数
1
解决办法
4481
查看次数

复制数据库SQL Server 2012时"作业失败"

我正在尝试复制数据库.通过复制数据库向导时,我收到执行SQL Server代理作业错误.错误说明

工作失败了.检查目标服务器上的事件日志以获取详细信息

执行操作

  • 添加包的日志(成功)

  • 添加传输数据库对象的任务(成功)

  • 创建包(成功)

  • 启动SQL Server代理作业(成功)

  • 执行SQL Server代理作业(错误)

错误:

工作失败了.检查目标服务器上的事件日志以获取详细信息.(复制数据库向导)

我似乎无法找到造成这个问题的原因.我使用正确的方法吗?我只需要复制这个数据库.提前致谢.

database jobs copy agent sql-server-2012

19
推荐指数
3
解决办法
4万
查看次数