我有以下 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),我需要:
Sno结果集中的所有父项。Sno另一个结果集中的所有子项。我需要显示每个结果集的前 …
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) 我有一个带有文本框字段的桌面应用程序,它是一个带有掩码值的RadMaskedNumericInput#6,这意味着它只能有 6 位数字。我将它存储在int类型的数据库列中。
当我检查数据库时,列中的某些值是 -2147483648。
我已尝试输入许多值,但无法重现此场景。我只能在此屏幕中输入 6 位数字。我尝试了最大值 999999,但它保持不变。
我只是获取文本框值,将其转换为int,然后通过存储过程将其插入到数据库中。
int value = (int)txtPrice.value;
Run Code Online (Sandbox Code Playgroud)
我试图输入负值以及尝试添加字母,但由于掩码,它不允许我添加除整数以外的任何值。
根据我的理解和知识,只有桌面应用程序可以插入或更新此列的值。
有谁知道为什么会这样?我该如何预防?
查询:
select year,sum(mark),sum(maxmark)
from table1
group by parameterno
Run Code Online (Sandbox Code Playgroud)
产生错误消息:
列“table1.year”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
我需要一个查询来获取未为 SQL Server 2014 中的 Always On 可用性组添加或配置的用户数据库。
我试图搜索这个并且能够找到很少但找不到确切的方法来编写数据库的数据库级别权限。
我正在迁移这个数据库,我可以使用创建其登录名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 个要复制的角色。
我有一个名为列createdate的datetime数据类型。我想提取今天和昨天之间的数据。
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?
我不小心使用 mysql-workbench 将一个空的数据库备份文件导入到同一个数据库中。有什么方法可以撤消此操作并取回数据?可用的备份是 4 个月大的,这太旧了,无法恢复,有什么想法吗?
sql-server ×8
select ×2
aggregate ×1
constraint ×1
datetime ×1
group-by ×1
hierarchy ×1
index ×1
mysql ×1
permissions ×1
query ×1
scripting ×1
sql-standard ×1
t-sql ×1