标签: sql-server-2008

如何保证 SQL Server 2008 R2 的插入首先缓存在 RAM 中?

想象一下“突发”的数据流,即它可能有 10,000 个事件非常快地到达,然后一分钟内什么也没有。

在此处输入图片说明

您的专家建议:我如何为 SQL Server 编写 C# 插入代码,以保证 SQL 立即将所有内容缓存在其自己的 RAM 中,而不会阻塞我的应用程序超过将数据输入到所述 RAM 所需的时间?为了实现这一点,您是否知道设置 SQL 服务器本身的任何模式,或者设置我正在写入的单个 SQL 表的模式?

当然,我可以做我自己的版本,这涉及在 RAM 中构建我自己的队列 - 但我不想重新发明旧石器时代的石斧,可以这么说。

sql-server-2008 sql-server c# visual-studio-2010

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

如何为域帐户创建 Sql Server 登录?

全部,

我在域中的服务器(假设Server1)上安装了 Sql Server 2008 (假设为AD)。我还有一个名为AD\Sql1的域帐户。这不是域 ( AD )上的管理员帐户,但我希望它是Server1上的管理员。然后在 Sql Server 上为该域帐户(不是本地帐户)创建一个登录名。

我怎么做?

问题:

  1. 用户AD\Sql1,我希望他成为Server1 上的管理员。为此,我是否只需创建一个具有相同用户名的本地帐户(比如Server1\Sql1)并将本地帐户设置为机器上的管理员。该本地帐户会自动映射到具有相同名称的域帐户吗?可能我应该在这里添加CREATE LOGIN [AD\Sql1] FROM WINDOWS对我不起作用的东西。我试过并得到一个错误说user does not exist in Windows(类似的东西)
  2. 现在,如果上述技术有效。让我们假设,AD \ SQL1,成为上的管理员Sever1。所以,理论上我不需要在 Sql Server 上为那个 Windows 域帐户创建一个 Sql 登录,对吗?属于BUILTIT\Admins一部分的所有本地管理员都自动拥有对 Sql Server 的系统管理员访问权限,对吗?

我哪里做错了?请分享任何可以更好地解释这个概念的 URL。

编辑:我还应该补充说,问题 1 和 2 是独立重要的。我知道如何将域/Windows 帐户添加为sysadmin. 但我对域和本地帐户之间的映射如何工作感兴趣。我的目标不是如何将本地帐户添加为系统管理员,我可以很快完成。我的意图不是粗鲁,而是尽可能清楚。如果我的问题仍然不清楚,请告诉我,以便我可以添加更多详细信息。

谢谢,
_UB

编辑:语法

sql-server-2008

17
推荐指数
1
解决办法
7万
查看次数

什么时候应该指定 PAD_INDEX?

因此,您可以使用FILLFACTOR在叶索引页中留出空间。指定PAD_INDEX还会在中间节点中留下空间。您应该指定哪些场景PAD_INDEX,它为索引提供了什么好处?

index sql-server-2008 sql-server

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

仅创建、恢复、删除部分数据库的 SQL Server 权限

在 MS SQL Server 2008 R2 上,我需要有可以创建、还原、DBCC CHECKDB 然后删除数据库的用户。但他一定不能访问或删除服务器上的指定数据库(安全原因)。这个设置可以吗?

sql-server-2008 sql-server

17
推荐指数
1
解决办法
6万
查看次数

我可以检索特定用户拥有的所有数据库对象吗?

我们有一个用户即将离开,我需要知道他拥有的每个数据库对象。是否有提供此信息的查询?

sql-server-2008 security sql-server

17
推荐指数
1
解决办法
4万
查看次数

在调用数据库上下文中执行的中央存储过程

我正在使用该sys.dm_db_index_physical_stats视图开发定制的维护解决方案。我目前从存储过程中引用它。现在,当该存储过程在我的一个数据库上运行时,它会执行我想要它做的事情并拉下有关任何数据库的所有记录的列表。当我将它放在不同的数据库上时,它会拉下与该数据库相关的所有记录的列表。

例如(底部的代码):

  • 针对数据库 6 运行的查询显示了数据库 1-10 的 [请求] 信息。
  • 针对数据库 3 运行的查询仅显示数据库 3 的 [请求] 信息。

我希望这个过程专门针对数据库 3 的原因是因为我更愿意将所有维护对象保留在同一个数据库中。我希望这项工作位于维护数据库中,并像在该应用程序数据库中一样工作。

代码:

ALTER PROCEDURE [dbo].[GetFragStats] 
    @databaseName   NVARCHAR(64) = NULL
    ,@tableName     NVARCHAR(64) = NULL
    ,@indexID       INT          = NULL
    ,@partNumber    INT          = NULL
    ,@Mode          NVARCHAR(64) = 'DETAILED'
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @databaseID INT, @tableID INT

    IF @databaseName IS NOT NULL
        AND @databaseName NOT IN ('tempdb','ReportServerTempDB')
    BEGIN
        SET @databaseID = DB_ID(@databaseName)
    END

    IF @tableName IS NOT NULL
    BEGIN
        SET @tableID = …
Run Code Online (Sandbox Code Playgroud)

index sql-server-2008 sql-server stored-procedures maintenance

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

由于潜在的数据丢失,无法转换该值

首先让我澄清一下,这不是一个重复的问题,也不是一个潜在的重复问题。我已经尝试对 StackOverflow 和 DBA Stack Exchange 上已经存在的这个问题的每一个变体实施每一个答案,但没有任何运气。

过去两天我一直在努力解决这个问题(每天大约工作 7 小时),即使在谷歌搜索这个问题之后,似乎没有其他人遇到我的问题的完全相同的变体。

我想做什么?

在 SSIS 中,我试图从 CSV 文件中读取数据,并将其中的行插入到 OLE DB 数据库中。为此,我进行了有史以来最简单的设置,如下所示。

  1. Flat File Source - 读取 CSV 行。
  2. Derived Column - 目前什么都不做(它只是为了试验)。
  3. Data Conversion - 目前什么都不做(它只是为了试验)。
  4. OLE DB Destination - 将行存储在数据库中。

当我尝试运行它时,它停止在我的OLE DB 目标处执行并显示以下错误消息。

输入“OLE DB 目标输入”(51) 上的输入列“数量”(187) 出错。返回的列状态为:“由于潜在的数据丢失,无法转换该值。”。

失败 ( Amount)的列当前的类型是DT_STR。这似乎是我现在最相信的类型。

我尝试了什么?

  • 我已尝试在Flat File Connection失败的列上使用“建议类型”功能。这使得它推荐Single byte signed int数据类型。
    • 停在我的平面文件源
    • 错误数据转换失败。列“金额”的数据转换返回了状态值 2 和状态文本“由于潜在的数据丢失,无法转换该值。”。
  • 我试过使用 Derived Column …

sql-server-2008 sql-server ssis windows-server

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

当 XACT_ABORT 设置为 ON 时,在什么情况下可以从 CATCH 块内部提交事务?

我一直在阅读 MSDN 关于TRY...CATCHXACT_STATE

它有以下示例,用于XACT_STATE在构造CATCH块中TRY…CATCH确定是提交还是回滚事务:

USE AdventureWorks2012;
GO

-- SET XACT_ABORT ON will render the transaction uncommittable
-- when the constraint violation occurs.
SET XACT_ABORT ON;

BEGIN TRY
    BEGIN TRANSACTION;
        -- A FOREIGN KEY constraint exists on this table. This 
        -- statement will generate a constraint violation error.
        DELETE FROM Production.Product
            WHERE ProductID = 980;

    -- If the delete operation succeeds, commit the transaction. The CATCH
    -- block will not execute. …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

17
推荐指数
4
解决办法
8424
查看次数

将表移动到另一个 SQL2008 数据库(包括索引、触发器等)

我需要将一大堆(100+)大(数百万行)表从一个 SQL2008 数据库移动到另一个数据库。

我最初只是使用导入/导出向导,但所有目标表都缺少主键和外键、索引、约束、触发器等(身份列也被转换为普通的 INT,但我想我只是错过了向导。)

这样做的正确方法是什么?

如果这只是几个表,我会回到源,编写表定义(包含所有索引等)的脚本,然后在目标上运行脚本的索引创建部分。但是有这么多表,这似乎不切实际。

如果没有太多数据,我可以使用“创建脚本...”向导来编写源代码,包括数据,但是 72m 行脚本似乎不是一个好主意!

sql-server-2008 sql-server migration

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

你如何按参数排序?

只是想知道我是否可以就我正在运行的存储过程征求一些反馈,以及是否有更有效的方法来处理这种情况(我很确定会有!)。

基本上,我有一个 SP,我调用它来返回可能具有一个或多个状态和排序顺序的记录(作业)列表(我使用 RowNum 进行分页)。目前我正在使用 WITH RECOMPILE,因为状态的变化可能一直在变化(取决于用户等)。还有一些过滤正在进行。

我正在使用 IF 语句来运行相同的代码,唯一的变化是排序顺序。

我想我的问题是:有没有更好的方法来做到这一点(对于不同的状态可能有不同的 SP)?由于缺乏知识,我是否使事情变得过于复杂(很可能) SP 实际上还可以,但需要进行细微调整以减少行数?

我在下面粘贴了 SP 的一部分 - 与完整代码的唯一区别是不同排序顺序的附加 IF 语句......

我很感激任何反馈。

提前致谢!

PROCEDURE [dbo].[sp_Jobs] 

@PageNumber int, 
@PageSize int, 
@FilterExpression varchar(500), 
@OrderBy varchar(50), 
@CustomerID int, 
@ShowNotSet bit, 
@ShowPlaced bit, 
@ShowProofed bit, 
@ShowReProofed bit, 
@ShowApproved bit, 
@ShowOnTime bit, 
@ShowLate bit, 
@ShowProblem bit, 
@ShowCompleted bit, 
@ShowDispatched bit, 
@ShowUnapproved bit, 
@ShowClosed bit, 
@ShowReturned bit, 
@UserID int

WITH RECOMPILE 

AS

--JobNumber DESC 
if @OrderBy='JobNumberDESC' 
BEGIN 

WITH Keys AS (SELECT TOP (@PageNumber * @PageSize) ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 stored-procedures

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