小编Blu*_*uuu的帖子

为什么COUNT(*)在SQL Server的所有表列上都需要SELECT权限?

我最近遇到了一个问题,COUNT(*)要求用户对表的每一列都具有选择权限。即使'COUNT(*)'规范明确指出

它不使用有关任何特定列的信息。

它只是返回结果中的行数。

因此,如果您想将表中的行数算作受限用户,则会获得权限异常。

这是一个例子:

CREATE TABLE [Product]
([name] nvarchar(100) null, [price] float)

CREATE USER Intern WITHOUT LOGIN;
DENY SELECT ON [Product] (price) TO Intern;

EXECUTE AS Intern;

-- Fails with "The SELECT permission was denied on the column 'price' of the object 'Product'"
SELECT COUNT(*) FROM [Product];

REVERT;
Run Code Online (Sandbox Code Playgroud)

经过一些测试,我发现它甚至 SELECT COUNT(1) FROM [Product]不起作用。

有人可以解释这种行为背后的原因是什么吗?什么是允许Intern用户仍然获得的准确计数的解决方法Product

更新:我对实习生可以使用的解决方法最感兴趣。因此,即使对于管理员来说,创建视图是最佳实践,实习生也没有此选项。

sql t-sql sql-server sql-server-2017

9
推荐指数
1
解决办法
163
查看次数

是否有像Visual Studio调试输出一样的WPF输出监视器控件

我正在尝试将输出监视器添加到我的WPF应用程序中.一个只读监视器,类似于visual studio中的调试输出.

是否有WPF控件已经提供了我需要的功能?或者有没有办法重用Visual Studio中的控件?

目前我正在使用由StringBuilder支持的标准TextBox.更新进入StringBuilder,而TextBox每200ms获取最新的字符串.

我的问题是,随着输出字符串变长,这变得非常慢.

c# wpf wpf-controls visual-studio

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

.Net 4.6.2上的RSACryptoServiceProvider"密钥不存在"

我正在使用PackageDigitalSignatureManager来签署Zip文件及其内容.我的代码工作正常,直到我更新到.Net 4.6.2突然我得到以下的预期:

System.Security.Cryptography.CryptographicException: Key does not exist 
bei System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
bei System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
bei System.Security.Cryptography.RSACryptoServiceProvider.SignHash(Byte[] rgbHash, Int32 calgHash)
bei System.Security.Cryptography.RSAPKCS1SignatureFormatter.CreateSignature(Byte[] rgbHash)
bei System.Security.Cryptography.AsymmetricSignatureFormatter.CreateSignature(HashAlgorithm hash)
bei System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
bei MS.Internal.IO.Packaging.XmlDigitalSignatureProcessor.Sign(IEnumerable`1 parts, IEnumerable`1 relationshipSelectors, X509Certificate2 signer, String signatureId, Boolean embedCertificate, IEnumerable`1 signatureObjects, IEnumerable`1 objectReferences)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors, String signatureId, IEnumerable`1 signatureObjects, IEnumerable`1 objectReferences)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors, String signatureId)
bei System.IO.Packaging.PackageDigitalSignatureManager.Sign(IEnumerable`1 parts, X509Certificate certificate, IEnumerable`1 relationshipSelectors)
Run Code Online (Sandbox Code Playgroud)

我使用的证书和私钥以及我使用的签名代码在过去几个月里根本没有变化.唯一的变化是切换到.Net …

c# rsacryptoserviceprovider x509certificate2

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