AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-42426

Michael Cherevko's questions

Martin Hope
Michael Cherevko
Asked: 2023-07-04 20:53:29 +0800 CST

了解 mongodb 中的 $dateAdd/$dateSubtract 行为

  • 3

我试图理解为什么$dateadd可以使用$expr但不能不使用:

此代码返回结果集:

db.getCollection("CollectionName").aggregate(
[
    {
        "$sort" : {
            "_id" : NumberInt(-1)
        }
    }, 
   {"$match": 
       {"$expr":
              {
                 $gte:
                    [ "$CreateDate",
                      {
                         $dateAdd:
                            {
                               startDate: ISODate(),
                               unit: "hour",
                               amount: -1
                            }
                       }
                    ]
              }
      }
   }
]);

虽然这不是(空结果集):

db.getCollection("CollectionName").aggregate(
[
    {
        "$sort" : {
            "_id" : NumberInt(-1)
        }
    }, 
   {"$match": 
       {"CreateDate": {
                      //"$gte" : ISODate("2023-07-04T12:25:00.000+0000") --works also
                      "$gte" : {$dateAdd:
                                    {
                                       startDate: ISODate(),
                                       unit: "hour",
                                       amount: -1
                                    }
                                }
                      }
                        
       }                    
   }
]);
  • 正如我在示例中所写,$dateadd用硬编码值替换也可以。
  • MongoDB版本是5.0.14
mongodb
  • 1 个回答
  • 17 Views
Martin Hope
Michael Cherevko
Asked: 2021-04-22 04:52:35 +0800 CST

有没有办法告诉优化器不要使用索引进行读取?

  • 0

当然,我可以删除并重新创建或禁用并重新构建它。
但是对于大型表可能需要时间,而对于关键表可能会导致问题。
是否有任何“更复杂”的方法来告诉 sql 保留索引数据(+ 处理更新\插入)而不使用它?
因此,如果需要,它可以立即“启用”吗?

sql-server index
  • 1 个回答
  • 60 Views
Martin Hope
Michael Cherevko
Asked: 2019-11-15 00:22:55 +0800 CST

使用 group by 和 window 函数减少表扫描

  • 3

我正在尝试改进的代码如下所示(简单示例):

SELECT    DISTINCT a.col_a
         ,COALESCE(b1.col_c, b2.col_c, b3.col_c)
FROM      tab_a a
LEFT JOIN tab_b b1
          ON a.col_a = b1.col_a
             AND b1.col_b = 'blabla1'
LEFT JOIN tab_b b2
          ON a.col_a = b2.col_a
             AND b2.col_b = 'blabla2'
LEFT JOIN tab_b b3
          ON a.col_a = b3.col_a
             AND b3.col_b = 'blabla3';

您可以使用以下脚本重新创建这些表

CREATE TABLE tab_a(col_a int)
CREATE TABLE tab_b(col_a INT, col_b VARCHAR(10), col_c INT)

INSERT INTO dbo.tab_a ( col_a ) VALUES ( 1 ), ( 2 ), ( 3 );

INSERT INTO dbo.tab_b ( col_a
                       ,col_b
                       ,col_c )
VALUES ( 1, 'blabla1', 1 )
      ,( 1, 'blabla2', 3 )
      ,( 1, 'blabla2', 5 )
      ,( 2, 'blabla2', NULL )
      ,( 2, 'blabla3', 5 );

如何将其更改为 1 join + 也许是窗口函数以及如何重写合并部分。只是为了解释一下,当前计划显示 3 个 tab_b 扫描,我想将其减少到 1 个。

sql-server sql-server-2016
  • 3 个回答
  • 435 Views
Martin Hope
Michael Cherevko
Asked: 2019-09-11 03:31:38 +0800 CST

查询店铺审核

  • 2

我们经常使用查询存储强制计划功能。
我们想审核每个计划的实施时间和人员。
是否需要扩展事件会话来审核此事件,
或者是否有包含此特定信息的 dmv 或目录视图?

sql-server sql-server-2016
  • 1 个回答
  • 132 Views
Martin Hope
Michael Cherevko
Asked: 2017-02-17 01:21:12 +0800 CST

先进的作业流程控制

  • 2

我想通过两个步骤创建一个工作:
1. 成功 - 转到第二步,失败 - 退出(f)。
2. 成功 - exit(s),失败 - 转到第一步,但如果此步骤多次失败 - exit(f)。
最初的想法是在第一步中查询某种作业运行 ID,如果此 ID 有四(或更多)行,则失败退出,但没有运行 ID 之类的东西。
实现此逻辑的最佳方法是什么?

sql-server sql-server-2014
  • 1 个回答
  • 110 Views
Martin Hope
Michael Cherevko
Asked: 2016-11-21 00:59:49 +0800 CST

将 NULL 传递给 SSIS 变量

  • 5

我正在构建一个包来使用配置表中的参数执行一个过程。

我已经构建了两个执行 SQL 任务框。一种是从配置表中填充 SSIS 变量。第二个使用这些变量执行过程。

我正面临以下行为。整数变量的默认值为 0,字符串为空字符串。即使在从配置表中获取 NULL 之后,这些变量也会保持它们的值。

如何更改此行为以将 NULL 的 SQL Server 逻辑应用为默认“值”,或者仅启用它们从配置表中获取的 NULL 以覆盖其默认值?

sql-server sql-server-2014
  • 1 个回答
  • 7858 Views
Martin Hope
Michael Cherevko
Asked: 2016-07-22 03:33:13 +0800 CST

使用配置表过滤扩展事件

  • 2

我已经创建了 EE 会话来审核登录,但是我需要过滤掉很多登录。我想知道,是否有比通过 gui\script 将它们一一添加
更好的选择(比如使用不需要的登录名创建 conf.table 并使用这些值进行过滤)。sqlserver.username

sql-server-2014 extended-events
  • 2 个回答
  • 457 Views
Martin Hope
Michael Cherevko
Asked: 2016-05-22 21:51:10 +0800 CST

捕获两条错误消息/扔到表中

  • 3

我的目标是将备份作业中的错误捕获到监控表中。
问题是,有些情况下备份语句返回多个错误,因此 ERROR_MESSAGE() 是不够的:

消息 3201,级别 16,状态 1,第 1 行无法打开备份设备“...”操作系统错误 3(系统找不到指定的路径。)。

消息 3013,级别 16,状态 1,第 1 行备份数据库异常终止。

我可以使用 throw 来捕获这两条消息,但是有没有一种简单的方法可以将 throw 输出插入到表中或以另一种方式克服这个问题?

sql-server sql-server-2014
  • 3 个回答
  • 1773 Views
Martin Hope
Michael Cherevko
Asked: 2016-03-03 00:48:02 +0800 CST

窗口函数不适用于非选定行

  • 2

我正在创建自动切换分区程序。
我正在创建如下所示的表:

CREATE TABLE #MaxPartitionRows
    (MaxRows BIGINT NOT NULL,
    PNumber INT NOT NULL, 
    PFName SYSNAME NOT NULL,
    Value VARCHAR(30) NOT NULL)

我用它来决定是否合并分区。
这些列是:每个分区函数表中的最大行数、分区号、分区函数和边界值。
逻辑是仅当下一个分区也为空时才合并分区。
所以我尝试了这个查询:

 SELECT @vcPartitionFunction    = PFName,
    @vcBoundaryValue        = Value,
    @NextPartitionRowNum    = LEAD(MaxRows) OVER (ORDER BY PNumber)
FROM #MaxPartitionRows
WHERE PNumber = @iMinPartitionNumberToSwitchOut

我遇到的问题是@NextPartitionRowNum获取NULL作为值,即使表中的行具有更大的分区号。
我的猜测是引擎不需要扫描下一行所以它返回NULL。
这是正确的假设吗?
在这种情况下,解决方法很简单,我只是使用

SELECT @NextPartitionRowNum = MaxRows 
    FROM #MaxPartitionRows
    WHERE PNumber = @iMinPartitionNumberToSwitchOut + 1

但如果我做不到呢?

sql-server sql-server-2014
  • 1 个回答
  • 60 Views
Martin Hope
Michael Cherevko
Asked: 2016-02-04 22:56:47 +0800 CST

使用链接服务器查询视图的最大限制权限

  • 3

我创建了通过链接服务器(SQL Server 2014)查询另一台服务器的视图。

我需要授予开发人员使用此视图的权限。
仅授予 select 是不够的,他们收到以下错误:

对远程服务器的访问被拒绝,因为不存在登录映射。

我可以授予他们从该视图中选择的最受限制的权限是什么?

我们使用 SQL 登录连接到链接服务器(使用此安全上下文进行),我可以使用我的用户查询此视图。我还可以使用我的 Active Directory 用户查询此视图。我没有尝试使用链接服务器登录来连接访问链接服务器,但是如果连接登录有任何问题,我的 AD 用户无法连接到链接服务器。

出于测试目的,我将sysadmin授予该用户。它可以查询这个视图,所以这绝对是一个权限问题。在授予sysadmin之前,用户只有public,在服务器级别没有特殊权限,并且在视图的数据库中只有db_reader 。

sql-server sql-server-2014
  • 2 个回答
  • 1510 Views
Martin Hope
Michael Cherevko
Asked: 2016-01-13 06:42:23 +0800 CST

将 ddl 触发器与内存表一起使用

  • 3

我创建了服务器范围 ddl 触发器来审核服务器上的用户活动。
现在,如果有人尝试创建内存表,则该语句将失败并出现以下错误:

Error SQL72014: .Net SqlClient Data Provider: Msg 12332, Level 16, State 107,
Line 1 Database and server triggers on DDL statements DROP and CREATE are not
supported with memory optimized tables.

我可以创建忽略内存表操作的 ddl 触发器吗?

sql-server sql-server-2014
  • 1 个回答
  • 2365 Views
Martin Hope
Michael Cherevko
Asked: 2015-02-27 04:07:53 +0800 CST

查找 AD 组权限来源

  • 1

我们有一个 AD 组作为多台服务器的登录名,通常作为系统管理员,
但我发现一台服务器该登录名无权访问任何数据库并且只有服务器公共角色。
我已经和这个小组的一个成员谈过这个问题,
他告诉我他可以访问这个服务器的数据库。
通过在我的本地站以不同用户身份(使用他的 AD 凭据)打开 SSMS,
他可以选择、更新该服务器中的表,甚至缩小日志文件(但除了 sa 和该组之外看不到登录名)。
我找不到这些权限的来源:
没有 Login\User 和他的凭据,
还有其他 AD 组,但如果我从该组撤销连接,那么
他将无法再连接到该服务器。
公共服务器角色只能查看任何数据库权限
公共数据库角色对 dbo 模式没有权限
数据库未部分包含....
我还能在哪里搜索此登录权限的来源?
*我和服务器计算机上的 SQL Server 2012。

我用这个查询来登录这个

   USE [master]
GO

DECLARE @username sysname
DECLARE @objname sysname
DECLARE @found integer
DECLARE @sql nvarchar(4000)
DECLARE @results TABLE (Login sysname)

SET @username = ' '
WHILE @username IS NOT NULL
BEGIN
SELECT @username = MIN(name)
FROM master.dbo.syslogins WITH (NOLOCK)
WHERE sysadmin = 0
AND securityadmin = 0
AND serveradmin = 0
AND setupadmin = 0
AND processadmin = 0
AND diskadmin = 0
AND dbcreator = 0
AND bulkadmin = 0
AND name > @username
AND Name NOT LIKE N'NT %'
AND Name NOT LIKE N'##%'
-- this is the list of non system logins
-- ids in server roles may not have corresponding users
-- any database but they should not be removed
SET  @found = 0

IF @username IS NOT NULL
    BEGIN
    --  now we search through each non system database
    --  to see if this login has database access
    SET @objname = ''
    WHILE @objname IS NOT NULL
    BEGIN
        SELECT @objname = MIN( name )
        FROM master.dbo.sysdatabases WITH (NOLOCK)
        WHERE
        name > @objname
        AND DATABASEPROPERTYEX(name, 'status') = 'ONLINE'

        IF @objname IS NOT NULL
        BEGIN
            SET @sql = N'SELECT @found = COUNT(*) FROM [' + @objname
            + N'].dbo.sysusers s WITH (NOLOCK) JOIN master.dbo.syslogins x WITH (NOLOCK)
            ON s.sid = x.sid WHERE hasdbaccess = 1 AND x.name = '''+ @username + ''''
            EXEC sp_executesql @sql,N'@found Int OUTPUT',@found OUTPUT
            --SELECT @found, @objname, @username
            IF @found IS NOT NULL AND @found > 0
                SET @objname = 'zzzzz'  -- terminate as a corresponding user has been found
        END
    END

    IF @found = 0
    BEGIN
    INSERT INTO @results
    SELECT @username
    END
END
END

SELECT SERVERPROPERTY('ServerName') ServerName ,Login
FROM @results r
ORDER BY Login
GO
sql-server sql-server-2012
  • 2 个回答
  • 1012 Views
Martin Hope
Michael Cherevko
Asked: 2014-07-10 00:35:11 +0800 CST

当所有作业成功完成时发送一封电子邮件

  • 0

我需要在多个实例上创建备份作业,我想知道是否有任何方法可以仅在所有实例的作业成功完成时通过邮件发送单个通知。

sql-server sql-server-2012
  • 1 个回答
  • 381 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve