小编Pau*_*ite的帖子

从自引用表(父、子)中返回分层数据

我有以下 SQL Server 2008 表和数据:

CREATE TABLE dbo.MyTable (Sno int, refid int);

INSERT INTO dbo.MyTable VALUES
  (17, 8),
  (16, 8),
  (15, 7),
  (14, 7),
  (13, 6),
  (12, 6),
  (11, 5),
  (10, 5),
  (9, 4),
  (8, 4),
  (7, 3),
  (6, 3),
  (5, 2),
  (4, 2),
  (3, 1),
  (2, 1),  
  (1, 0);
Run Code Online (Sandbox Code Playgroud)

请注意,Sno2 和 3 引用Sno同一个表中的 1(自引用)。所以 2 和 3 是 1 的孩子,1 是 2 和 3 的父母。

要求

我将传入一个Sno值(例如 4),我需要:

  1. Sno结果集中的所有父项。
  2. Sno另一个结果集中的所有子项。

我需要显示每个结果集的前 …

sql-server hierarchy select

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

SQL sys.tables 格式

我可以获得如下所示的数据库和表:

在此处输入图片说明

但我想要的结果是

在此处输入图片说明

我怎样才能做到这一点?我想改进格式,但我不知道如何。

sql-server sql-server-2014

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

验证此 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
查看次数

-2147483648 整数类型列中的值,尽管输入掩码

我有一个带有文本框字段的桌面应用程序,它是一个带有掩码值的RadMaskedNumericInput#6,这意味着它只能有 6 位数字。我将它存储在int类型的数据库列中。

当我检查数据库时,列中的某些值是 -2147483648。

我已尝试输入许多值,但无法重现此场景。我只能在此屏幕中输入 6 位数字。我尝试了最大值 999999,但它保持不变。

我只是获取文本框值,将其转换为int,然后通过存储过程将其插入到数据库中。

int value = (int)txtPrice.value;
Run Code Online (Sandbox Code Playgroud)

我试图输入负值以及尝试添加字母,但由于掩码,它不允许我添加除整数以外的任何值。

根据我的理解和知识,只有桌面应用程序可以插入或更新此列的值。

有谁知道为什么会这样?我该如何预防?

sql-server constraint data-integrity

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

SELECT 列如何不在 GROUP BY 子句中列出

查询:

select year,sum(mark),sum(maxmark) 
from table1 
group by parameterno
Run Code Online (Sandbox Code Playgroud)

产生错误消息:

列“table1.year”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

group-by sql-standard

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

未为 Always On AG 添加或配置用户数据库

我需要一个查询来获取未为 SQL Server 2014 中的 Always On 可用性组添加或配置的用户数据库。

sql-server availability-groups sql-server-2014

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

编写数据库用户级别权限的脚本

我试图搜索这个并且能够找到很少但找不到确切的方法来编写数据库的数据库级别权限。

我正在迁移这个数据库,我可以使用创建其登录名sp_help_revlogin,但不会复制用户权限。

我可以使用以下查询提取权限:

SELECT
   ISNULL(OBJECT_NAME(major_id),'') [Objects], USER_NAME(grantee_principal_id) as [UserName], permission_name as [PermissionName]
FROM
    sys.database_permissions p
WHERE grantee_principal_id>0
ORDER BY
    OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
Run Code Online (Sandbox Code Playgroud)

但是我需要像 rev login 这样的东西来生成一个脚本,你可以执行来获取权限映射。

我尝试过 DBAtools,但我无法使用,因为它失败并出现错误

无法找到类型 [DbaInstanceParameter]

我有 50 多个登录名和大约 20 个要复制的角色。

sql-server permissions scripting sql-server-2012

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

如何提取昨天和今天之间的数据?

我有一个名为列createdatedatetime数据类型。我想提取今天和昨天之间的数据。

select * from table1(nolock) where createdate ='2018-06-01' --not getting any output
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

select * from table1(nolock) where createdate between '2018-06-01' and '2018-06-02'
Run Code Online (Sandbox Code Playgroud)

而不是硬编码日期,我需要之间dateadd(d,-1,getdate()) and getdate(),但getdate()提供当前时间戳。我怎样才能搜索一整天 like2018-06-02而不是2018-06-02 02:12:13.423

sql-server select datetime

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

查找不同用户并发登录的最大数量

我正在寻找提供月份和年份的查询,并显示所选月份的 4(或 5)周,并且每周应显示本周同时登录用户的最大数量。最大用户数应根据 SQL Server 表 usersession 计算。同时意味着同时登录,即它们具有重叠的登录日期时间/注销日期时间。。表和示例

因此,如果存在并发用户,则应给出不同用户的数量,如果该日期存在用户但不并发,则应返回 1,否则返回 0。

我知道这很难。

sql-server query aggregate

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

不小心用空数据覆盖了mysql数据库

我不小心使用 mysql-workbench 将一个空的数据库备份文件导入到同一个数据库中。有什么方法可以撤消此操作并取回数据?可用的备份是 4 个月大的,这太旧了,无法恢复,有什么想法吗?

mysql disaster-recovery

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