我有一个要求,我需要从 sa 登录中删除 sysadmin 服务器角色。
我又创建了 1 个用户,并将 sysadmin 角色授予该用户。
当我从 sa 登录中取消选中 sysadmin 时,它会引发错误。
无法使用特殊主体 sa 错误 15405。
任何人都可以知道如何做到这一点吗?
我们有一台处于脱机状态的 Windows Server 2008。我们无法再访问服务器操作系统或任何 GUI 工具,但我们确实拥有整个C:/服务器的备份。
该服务器曾经托管一个 SQL Server 实例,现在我们需要访问该服务器上的一个数据库,以便我们可以将其移动到新服务器。
我们怎样才能做到这一点?
我们可以简单地将MSSQL/DATA备份文件中的目录复制到新服务器吗?
sql-server-2008 sql-server backup sql-server-2008-r2 windows-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) 运行此代码时:
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 R2 Enterprise Manager(不是 SQL Server Management Studio)免费?去哪里下地呢?或者它只适用于 SQL Server 2000 并被更高版本的 SQL Server Management Studio 取代?
我有一张桌子
当我在那之后插入新行时,我想知道我的表中的最新记录..
如何为此编写查询?我不想使用任何主键或时间戳或其他
任何人都可以回答这个问题吗?
我不确定如何将其从 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) 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) 我使用的是 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专栏的方法:
DetailsCount使用查询:UPDATE MasterTable
SET DetailsCount = (SELECT COUNT(*) FROM DetailsTable WHERE MId = ?)
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)
由于详细信息表中有数百万条记录,这种方法的性能不高,因为每次在其中添加新记录时我都需要扫描详细信息表(以获取计数)。即使使用非聚集索引,它的性能也不佳。如果我们简单地评论该列的更新,我们会看到性能的显着提高。
DetailsCountusing 查询:UPDATE MasterTable
SET DetailsCount = DetailsCount + 1
WHERE MId = ?
Run Code Online (Sandbox Code Playgroud)
这种方式更好,因为我不需要访问详细信息表。
但是,详细信息表中的插入发生在多个线程上。每个线程使用不同的SqlConnection实例。
这就是为什么DetailsCount经常会更新错误的值。
我查看了 …
我们正在构建一个工作中的新服务器,我希望了解我们应该如何构建它以获得最佳性能和备份能力。我们有 6 个驱动器,我们需要一个操作系统(Windows Server 2008)和数据库(SQL Server 2010)。一切都是全新的,6 个 146GB 磁盘驱动器、2 个 AMD 2.2Ghz 四核处理器和 16GB 内存。
我们有一个程序可以连续读取和写入 SQL 数据库。