标签: sql-server-2008

如何从sql server的sa登录中删除sysadmin

我有一个要求,我需要从 sa 登录中删除 sysadmin 服务器角色。

我又创建了 1 个用户,并将 sysadmin 角色授予该用户。

当我从 sa 登录中取消选中 sysadmin 时,它会引发错误。

无法使用特殊主体 sa 错误 15405。

任何人都可以知道如何做到这一点吗?

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

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

文件系统中的 SQL Server 访问数据库

我们有一台处于脱机状态的 Windows Server 2008。我们无法再访问服务器操作系统或任何 GUI 工具,但我们确实拥有整个C:/服务器的备份。

该服务器曾经托管一个 SQL Server 实例,现在我们需要访问该服务器上的一个数据库,以便我们可以将其移动到新服务器。

我们怎样才能做到这一点?

我们可以简单地将MSSQL/DATA备份文件中的目录复制到新服务器吗?

sql-server-2008 sql-server backup sql-server-2008-r2 windows-server

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

EVENTDATA() 函数在 SQL Server 中仅给出空值

我正在尝试使用触发器捕获登录时间EVENTDATA()。但它只为所有类型的事件提供 Null 值。有人可以帮我解决这个问题吗?这是我的触发器

CREATE TRIGGER trgBlockIP
    ON ALL SERVER
    FOR LOGON
    AS
    BEGIN
       DECLARE @clientip NVARCHAR(15);
       SET @clientip = (
                          SELECT
                             EVENTDATA().value(
                                                 '(/EVENT_INSTANCE/Clienthost)[1]',
                                                 'NVARCHAR(15)'
                                              )
                       );
       IF EXISTS (
                    SELECT ip
                    FROM   master.dbo.BLockedIPAddresses
                    WHERE  ip = @clientip
                 )
       BEGIN
          PRINT 'Your IP Address is blocked';
          ROLLBACK;
       END;
       ELSE
       BEGIN
          DECLARE @Range VARCHAR(15);
          SELECT
             @Range = SUBSTRING(
                                  @clientip,
                                  1,
                                  LEN(@clientip)
                                  - CHARINDEX('.', REVERSE(@clientip))
                               ) + '.*';
          IF EXISTS (
                       SELECT ip
                       FROM   master.dbo.BLockedIPAddresses
                       WHERE  ip = @Range
                    )
          BEGIN …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2008 sql-server t-sql functions

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

转换失败 varchar 到 int

运行此代码时:

declare @SQL NVARCHAR(max);
declare @intFlag INT;
set @intFlag = 2;

SET @SQL = ' SELECT * into [##tmp1] 
FROM servicesstats_0511_0412 s WHERE department=''ACC''
and ((SELECT COUNT(*) FROM servicesstats_0511_0412 WHERE department <> ''ACC''
and s.studentid=studentid ) = ' + @intFlag + ')';

EXEC SP_EXECUTESQL @SQL 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

将 varchar 值 'SELECT * 转换为 [##tmp1] FROM servicesstats_0511_0412 s WHERE Department='ACC' and ((SELECT COUNT(*) FROM servicesstats_0511_0412 WHERE department <> 'ACC' and s.studentid=studentid ) = 时转换失败' 到数据类型 int。

servicesstats_0511_0412 将是动态的,因此需要动态 SQL。

我认为这不应该发生,因为 count(*) 总是返回一个 …

sql-server-2008

-1
推荐指数
1
解决办法
9127
查看次数

在哪里下载 SQL Server 2008 R2 企业管理器?

如果 SQL Server 2008 R2 Enterprise Manager(不是 SQL Server Management Studio)免费?去哪里下地呢?或者它只适用于 SQL Server 2000 并被更高版本的 SQL Server Management Studio 取代?

sql-server-2008 sql-server ssms

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

关于 sql server 中的最新行

我有一张桌子

  • ID
  • 姓名

当我在那之后插入新行时,我想知道我的表中的最新记录..

如何为此编写查询?我不想使用任何主键或时间戳或其他

任何人都可以回答这个问题吗?

sql-server-2008

-1
推荐指数
1
解决办法
59
查看次数

您如何将其转换为 SQL Server 2008 语句?

我不确定如何将其从 Access 转换为 SQL。我们目前正在使用 SQL Server 2008。我正在尝试将 Access 报告迁移到 SQL 视图中。

SELECT 
  First(IIf(IsNull([dbo_CUST_ADDRESS]![STATE]),IIf(IsNull([dbo_CUSTOMER]![BILL_TO_STATE]),[dbo_CUSTOMER]![STATE],[dbo_CUSTOMER]![BILL_TO_STATE]),[dbo_CUST_ADDRESS]![STATE])) AS STATE
  , dbo_RECEIVABLE.INVOICE_ID
  , dbo_RECEIVABLE.INVOICE_DATE
  , dbo_RECEIVABLE.CUSTOMER_ID
  , First(IIf(IsNull([dbo_CUST_ADDRESS]![NAME]),IIf(IsNull([dbo_CUSTOMER]![BILL_TO_NAME]),[dbo_CUSTOMER]![NAME],[dbo_CUSTOMER]![BILL_TO_NAME]),[dbo_CUST_ADDRESS]![NAME])) AS COMPANY
  , Sum(IIf([dbo_RECEIVABLE_LINE]![GL_ACCOUNT_ID]='4005-008',0,[dbo_RECEIVABLE_LINE]![AMOUNT])) AS Inv_Total_Amt
  , Sum(IIf([dbo_RECEIVABLE_LINE]![REFERENCE]<>"LA-COUNTY" And [dbo_RECEIVABLE_LINE]![REFERENCE]<>"FREIGHT" And [dbo_RECEIVABLE_LINE]![GL_ACCOUNT_ID]<>'4005-008',[dbo_RECEIVABLE_LINE]![AMOUNT],0)) AS Subtotal
  , Sum(IIf([dbo_RECEIVABLE_LINE]![REFERENCE]="LA-COUNTY",[dbo_RECEIVABLE_LINE]![AMOUNT],0)) AS TAX
  , Sum(IIf([dbo_RECEIVABLE_LINE]![REFERENCE]="FREIGHT",[dbo_RECEIVABLE_LINE]![AMOUNT],0)) AS Freight
  , dbo_RECEIVABLE.SALESREP_ID    
FROM (((dbo_RECEIVABLE RIGHT JOIN dbo_RECEIVABLE_LINE ON dbo_RECEIVABLE.INVOICE_ID = dbo_RECEIVABLE_LINE.INVOICE_ID) LEFT JOIN dbo_CUSTOMER_ORDER ON dbo_RECEIVABLE_LINE.CUST_ORDER_ID = dbo_CUSTOMER_ORDER.ID) LEFT JOIN dbo_CUST_ADDRESS ON (dbo_CUSTOMER_ORDER.CUSTOMER_ID = dbo_CUST_ADDRESS.CUSTOMER_ID) AND (dbo_CUSTOMER_ORDER.SHIP_TO_ADDR_NO = dbo_CUST_ADDRESS.ADDR_NO)) LEFT JOIN dbo_CUSTOMER ON dbo_RECEIVABLE.CUSTOMER_ID = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 ms-access

-1
推荐指数
1
解决办法
145
查看次数

验证此 TSQL 以查找碎片化超过 50% 的索引

select 
OBJECT_SCHEMA_NAME(IPS.object_id) 'schema',
  OBJECT_NAME(IPS.object_id) as table_name,index_type_desc,
  round(avg_fragmentation_in_percent,2) 'avg_fragmentation_in_percent',
  si.name
   from  sys.dm_db_index_physical_stats(db_id(DB_NAME()),null, 
   NULL, NULL , 'DETAILED') AS IPS inner join  sys.indexes si on 
   si.object_id=IPS.object_id
   where
   index_type_desc <> 'HEAP' and avg_fragmentation_in_percent >=50
   order by avg_fragmentation_in_percent desc
Run Code Online (Sandbox Code Playgroud)

index sql-server-2008 sql-server t-sql fragmentation

-1
推荐指数
1
解决办法
361
查看次数

如何以高性能且准确的方式增加主表列中的值与详细信息表中的记录数?

我使用的是 SQL Server 2008 及以上版本。

我有以下两个表:

MasterTable
MId
DetailsCount DEFAULT 0

DetailsTable
DId
MId
Run Code Online (Sandbox Code Playgroud)

在 中,我将匹配的MasterTable.DetailsCount记录数存储在 中。DetailsTableMId

首先将记录插入到主表中,然后将给定 MId 的数千条记录插入到详细信息表中。这发生在多个线程上。每个线程都有自己的SqlConnection.
详细信息表中的总记录数为数百万,并且还在不断增加。

DetailsTable.MId列上添加非聚集索引。无法添加聚集索引。

我尝试过两种维护DetailsCount专栏的方法:

  1. 扫描详细信息表以获取计数
    插入详细信息表后,更新DetailsCount使用查询:
UPDATE MasterTable
SET DetailsCount = (SELECT COUNT(*) FROM DetailsTable WHERE MId = ?)
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)

由于详细信息表中有数百万条记录,这种方法的性能不高,因为每次在其中添加新记录时我都需要扫描详细信息表(以获取计数)。即使使用非聚集索引,它的性能也不佳。如果我们简单地评论该列的更新,我们会看到性能的显着提高。

  1. 主表中的增量计数
    在详细信息表中插入后,更新DetailsCountusing 查询:
UPDATE MasterTable
SET DetailsCount = DetailsCount + 1
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)

这种方式更好,因为我不需要访问详细信息表。
但是,详细信息表中的插入发生在多个线程上。每个线程使用不同的SqlConnection实例。
这就是为什么DetailsCount经常会更新错误的值。

我查看了 …

sql-server-2008 sql-server count update query-performance

-1
推荐指数
1
解决办法
801
查看次数

SQL Server 构建

我们正在构建一个工作中的新服务器,我希望了解我们应该如何构建它以获得最佳性能和备份能力。我们有 6 个驱动器,我们需要一个操作系统(Windows Server 2008)和数据库(SQL Server 2010)。一切都是全新的,6 个 146GB 磁盘驱动器、2 个 AMD 2.2Ghz 四核处理器和 16GB 内存。

我们有一个程序可以连续读取和写入 SQL 数据库。

sql-server-2008 sql-server hardware

-2
推荐指数
1
解决办法
1609
查看次数