我最近遇到了一个问题,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。
更新:我对实习生可以使用的解决方法最感兴趣。因此,即使对于管理员来说,创建视图是最佳实践,实习生也没有此选项。
我正在尝试将输出监视器添加到我的WPF应用程序中.一个只读监视器,类似于visual studio中的调试输出.
是否有WPF控件已经提供了我需要的功能?或者有没有办法重用Visual Studio中的控件?
目前我正在使用由StringBuilder支持的标准TextBox.更新进入StringBuilder,而TextBox每200ms获取最新的字符串.
我的问题是,随着输出字符串变长,这变得非常慢.
我正在使用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 …