标签: sql-server-2014

SQL Server 网络接口库无法注册服务主体名称 (SPN)

Windows 返回代码:0x21c7,状态:15。未能注册 SPN 可能会导致集成身份验证使用 NTLM 而不是 Kerberos。这是一条情报信息。仅当身份验证策略需要 Kerberos 身份验证并且尚未手动注册 SPN 时,才需要采取进一步措施。

每当我重新启动我的 SQL 服务时,我都会遇到上述错误。我将其从当前服务帐户更改为本地帐户,并且能够从本地计算机连接到 SSMS,但是如果我使用当前服务帐户,则会出现此错误,并且在 SSMS 中,错误是:

目标主体名称不正确。无法生成 SSPI 上下文。

此服务帐户的密码不会更改。

sql-server sql-server-2014

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

动态查询的索引解决方案

我有一个贷记/借记表(5 百万条记录)。应用程序必须提供一个 UI 视图来搜索提供 N 个条件的数据:

  • 日期类型(必填)例如。创建日期或截止日期
  • 日期范围(必填)
  • 状态(付费、未付费或两者兼有)
  • 文件号码
  • 顾客ID
  • 付款方式(信用卡、现金等)

用户必须提供前两个标准,但可以提供或不提供另一个。所以我有很多组合。

我想我将不得不创建许多索引,例如:

  • ix_search_customerID_dueDate (customerID, DueDate)
  • ix_search_customerID_creationDate (customerID, creationDate)

有无数组合。我使用 C# 和实体框架根据提供的值生成查询,这很容易做到,但我不知道如何创建索引来涵盖所有可能性。是否有可能或我应该更改 UI 逻辑?

我阅读了这个答案,因此基于此我相信如果我创建一个索引(creationDate、状态、文档、customerID、typeOfPayment)并且用户只提供例如 Customer ID 索引将不起作用。

index sql-server sql-server-2014

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

REPLACE 和 CONVERT 的结果是一个 VARCHAR(8000) - 我怎么能得到一个 VARCHAR(50) 作为结果呢?

我有很多情况需要将带有许多小数位的大浮点数转换为带有 2、1 或根本没有小数位的四舍五入数字。

我一直在这样做的方式如下所示:

declare @t table ( [rows] float )


insert into @t 
select 1.344
union all select 32.3577
union all select 65.345
union all select 12.568
union all select 12.4333

select * from @t
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在我将进行转换并将它们全部保存到临时表中,然后我们将查看临时表的结构。

begin try
   drop table #radhe
end try
begin catch
end catch


select 
[Rows Formated] = REPLACE(CONVERT(VARCHAR(50),CAST(sp.[Rows] AS MONEY),1), '.00','')
into #radhe
from @t sp


select * 
from #radhe
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

一切都很好,效果很好,它做了我想要的,但是,当我查看表的结构时,我得到以下信息:

use tempdb
go

sp_help '#radhe'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

您可以在图片上看到 varchar(8000)。我们可以避免吗?

我会很高兴使用 varchar(50)

sql-server varchar type-conversion floating-point sql-server-2014

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

快速转换为大 INT

我有大量的大型数据库(300+!),它们的大小从很小到绝对庞大(120 GB+)不等。我已经确定了一种生成脚本的方法,以决定需要删除哪些索引、外键、主键和默认约束,以便将一组已知的列转换intbigint数据类型。

我们遇到的问题是在更大的数据库上,我们在这个查询上运行了 2-3 天,这在生产中是不可接受的。是否有一种方法可以比当前的 drop-change-rebuild 过程更快地进行这些转换?

sql-server type-conversion sql-server-2014

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

SQL Server 2014 在启动时使用高内存

SQL Server 2014即使它处于空闲状态并且没有运行查询,该进程也在使用高内存。重新启动服务后,它再次发生,一段时间后内存使用量增加到 2.2GB。

过程

主人是Windows Server 2012

为什么?我怎样才能找到问题?

sql-server memory sql-server-2014

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

sql中如何将多条语句合并为一条Select语句

如何将多条语句合并为一条选择语句。

我试过但得到错误:“当子查询没有通过 EXISTS 引入时,只能在选择列表中指定一个表达式。”

下面我已经提到了所有 4 个陈述。

声明 1

SELECT * 
FROM   (SELECT ROW_NUMBER() OVER(
            ORDER BY 
                CASE WHEN ISNUMERIC(ProductCode) = 0 
                     THEN CAST(LEFT(RIGHT(ProductCode,LEN(ProductCode)-CHARINDEX('-',ProductCode)), patindex('%[^0-9]%', RIGHT(ProductCode,LEN(ProductCode)-CHARINDEX('-',ProductCode))+'.') - 1)  AS INT) 
                ELSE ProductCode END
              , ProductCode
            ) AS Num1
          , ProductCode + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + ProductName AS ProductCodeName1
        FROM  BASE_Product 
        WHERE IsActive = 1
        ) BASE_Product 
WHERE  Num1 > 0 AND Num1 < (95 + 1)
Run Code Online (Sandbox Code Playgroud)

声明 2

SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY CASE …
Run Code Online (Sandbox Code Playgroud)

sql-server-2014

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

日志驱动器在 SQL Server 中被填满

我们正面临日志驱动器 ( E :) 经常被填满的问题。

我们的 DBMS 是设置了 AOAG 的 SQL Server 2014 SP1。

我们有每周维护任务:

  1. 重建索引(运行接近 1 小时)
  2. 更新统计信息(运行 Cloe 到 30 分钟)
  3. 检查数据库运行接近 30 分钟
  4. 完整备份运行接近 4 小时
  5. 差速运行接近 2 小时

我们没有看到任何繁重的事务处理。

但是我们可以看到E:被填满了。

以下是自动增长设置:

  • 10% 无限增长。

注意:由于这是 AOAG 环境,我们每 30 分钟安排一次事务日志备份。

我的问题:

  • 在这种情况下,是什么让E:被填满了?

  • 为什么我的日志没有被截断?

  • 在这种情况下,我们需要扩展 E: 吗?

  • 截断我的日志的行动计划应该是什么?

截至目前,在我们决定下一个扩展驱动器的计划之前,我们不时缩小文件以释放空间。

请建议。

sql-server backup transaction-log availability-groups sql-server-2014

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

SQL Server 2014 - 编译期间奇怪的 SP 行为

今天我注意到在 SQL Server 2014 中创建存储过程的过程中出现了一个奇怪的行为。下面是我的测试过程。请解释为什么 SQL Server 不允许用第一个SELECT编译而允许用第二个编译。

CREATE PROCEDURE [dbo].[test]
AS
BEGIN

    SET NOCOUNT ON;

    IF 1=0  -- this will never occur
    BEGIN
        select x from Table -- TABLE EXIST BUT COLUMN NOT - STORED PROCEDURE IS NOT CREATED
        --Msg 207, Level 16, State 1, Procedure test, Line 25
        --Invalid column name 'x'.

        -- But if i change 
        select x from TableWhichNotExistInDatabase  -- This table not exist in database, but stored procedure has been created without any …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures sql-server-2014

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

为什么索引视图的性能会比等效表差得多?

我有这张桌子

create table SkaData.FiscalPeriod(
     PeriodNo               int     not null constraint FiscalPeriod_FK_BasePeriod    references SkaData.Period(Number)
    ,YearEndMonthNo         int     not null constraint Fiscalperiod_CK_YearEnd       check (YearEndMonthNo between 1 and 12)
    ,ContributionType       char(4) not null constraint FiscalPeriod_CK_ContribType   check(ContributionType in ('Base','Cr','Dr'))

    ,ContributionSign       int     not null constraint FiscalPeriod_CK_ContribSign   check(ContributionSign in (+1,-1))
    ,ContributionPeriodNo   int     not null constraint FiscalPeriod_FK_ContribPeriod references SkaData.Period(Number)

    ,constraint FiscalPeriod_PK unique clustered (PeriodNo,YearEndMonthNo,ContributionType)
);
Run Code Online (Sandbox Code Playgroud)

目前填充为

    insert Skadata.FiscalPeriod(
        PeriodNo,YearEndMonthNo,ContributionType,ContributionperiodNo,ContributionSign)
        select
             data.PeriodNo
            ,YearEndMonthNo
            ,ContributionType
            ,ContributionPeriodNo   = pvt.PeriodNo
            ,ContributionSign       = pvt.Sign
        from (
            select 
                 YearEndMonthNo = N
                ,PeriodNo       = Period.Number
                ,CreditPeriodNo …
Run Code Online (Sandbox Code Playgroud)

sql-server materialized-view sql-server-2014

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

如何从 sp_MSforeachdb 中排除 tempdb?

下面我有一个代码来获取有关服务器中每个数据库的 t-log 备份的信息。我想从这个列表中排除 tempdb。

exec sp_MSforeachdb 'SELECT server_name, sysdb.name AS DatabaseName, bkup.user_name AS [User],
ceiling(bkup.backup_size /1048576) as ''Size Meg'' ,
cast((bkup.backup_size /1073741824) as decimal (9,2)) as ''Gig'',
bkup.backup_start_date AS [Backup Started],
bkup.backup_finish_date AS [Backup Finished (Last BackUp Time)],
CAST((CAST(DATEDIFF(s, bkup.backup_start_date, bkup.backup_finish_date) AS int))/3600 AS varchar) + '' hours, ''
+ CAST(DATEDIFF(mi, bkup.backup_start_date, bkup.backup_finish_date) - (DATEDIFF(mi, bkup.backup_start_date, bkup.backup_finish_date)/60)*60 AS varchar) + '' minutes, ''
+ CAST((CAST(DATEDIFF(s, bkup.backup_start_date, bkup.backup_finish_date) AS int))%60 AS varchar)+ '' seconds'' AS [Total Time]
,DATEDIFF(DAY,CONVERT(CHAR(8),backup_finish_date,112),CONVERT(CHAR(8),expiration_date,112)) AS expiration_days
,bms.description …
Run Code Online (Sandbox Code Playgroud)

backup stored-procedures tempdb sql-server-2014

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