2019年7月29日 星期一

[windows] 允許多人遠端磚面連線


轉自:https://is.gd/iA0dzF



預設情況下,同一個帳號,只能一個連線,如果建立新的連線,舊的連線會被斷線

以下是開放的方式:

執行 【gpedit.msc】



【電腦設定】->【系統管理範本】->【Windows元件】

>【遠端桌面服務】->【遠端桌面工作階段主機】->【連線】

在右邊的視窗,找到【限制遠端桌面服務的使用者只能使用一個遠端桌面服務工作階段】,預設是【尚未設定】

改成【已停用】




2019年4月4日 星期四

[C#] 用CLR讓 SQL 可以用GZIP壓縮字串


C#  程式碼







     
        /// <summary>
        /// 将传入字符串以GZip算法压缩后,返回Base64编码字符
        /// </summary>
        /// <param name="rawString">需要压缩的字符串</param>
        /// <returns>压缩后的Base64编码的字符串</returns>
        public static string GZip(string rawString)
        {
            return rawString;   //off test
            if (string.IsNullOrEmpty(rawString) || rawString.Length == 0)
            {
                return "";
            }
            else
            {
                byte[] rawData = System.Text.Encoding.UTF8.GetBytes(rawString.ToString());
                byte[] zippedData = GZip_Compress(rawData);
                return (string)(Convert.ToBase64String(zippedData));
            }

        }
        /// <summary>
        /// GZip压缩
        /// </summary>
        /// <param name="rawData"></param>
        /// <returns></returns>
        public static byte[] GZip_Compress(byte[] rawData)
        {
            MemoryStream ms = new MemoryStream();
            GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
            compressedzipStream.Write(rawData, 0, rawData.Length);
            compressedzipStream.Close();
            return ms.ToArray();
        }
        /// <summary>
        /// 将传入的二进制字符串资料以GZip算法解压缩
        /// </summary>
        /// <param name="zippedString">经GZip压缩后的二进制字符串</param>
        /// <returns>原始未压缩字符串</returns>
        public static string UnGZip(string zippedString)
        {
            return zippedString;   //off test
            if (string.IsNullOrEmpty(zippedString) || zippedString.Length == 0)
            {
                return "";
            }
            else
            {
                byte[] zippedData = Convert.FromBase64String(zippedString.ToString());
                return (string)(System.Text.Encoding.UTF8.GetString(UnGZip_Decompress(zippedData)));
            }
        }
        /// <summary>
        /// ZIP解压
        /// </summary>
        /// <param name="zippedData"></param>
        /// <returns></returns>
        public static byte[] UnGZip_Decompress(byte[] zippedData)
        {
            MemoryStream ms = new MemoryStream(zippedData);
            GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Decompress);
            MemoryStream outBuffer = new MemoryStream();
            byte[] block = new byte[1024];
            while (true)
            {
                int bytesRead = compressedzipStream.Read(block, 0, block.Length);
                if (bytesRead <= 0)
                    break;
                else
                    outBuffer.Write(block, 0, bytesRead);
            }
            compressedzipStream.Close();
            return outBuffer.ToArray();
        }
 







產生SQL共用函式

-----------------------1.set SQL Server可執行CLR-----------------------
sp_configure 'clr enabled', 1
GO
RECONFIGURE
go

-----------------------2.建立ASSEMBLY-----------------------

CREATE ASSEMBLY Net_SQLCom  FROM '******\bin\Debug\SQLCom.dll'
WITH PERMISSION_SET = SAFE;
--drop ASSEMBLY Net_SQLCom
go

--chk  有沒有看到Net_SQLCom
SELECT * FROM sys.assemblies
go

-----------------------3.建立function-----------------------
--drop function GZip
--drop function UnGZip

CREATE FUNCTION [dbo].[GZip](@str [nvarchar](max) )
RETURNS [nvarchar](MAX) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Net_SQLCom].[UserDefinedFunctions].[GZip]
GO


CREATE FUNCTION [dbo].[UnGZip](@str [nvarchar](max) )
RETURNS [nvarchar](MAX) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Net_SQLCom].[UserDefinedFunctions].[UnGZip]
GO

--chk  有沒有看到function
SELECT * FROM sys.assembly_modules;

-----------------------4.Test-----------------------
select [dbo].[UnGZip]([dbo].[GZip]('setse' ))





注意資料庫型別

char資料有固定長度,並且都為英文數字。
nchar資料有固定長度,但不確定是否皆為英文數字。
varchar資料沒有固定長度,並且都為英文數字。
nvarchar資料沒有固定長度,且不確定是否皆為英文數字。

[C#] 產生DLL給MS SQL引用



建置CLR 使用者定義函式,產出DLL給MS SQL 會出現錯誤

CREATE ASSEMBLY 失敗,因為組件是針對不支援的 Common Language Runtime 版本所建立的

此時可使用  .NET  3.5 編譯即可



環境 VS 2015
MS SQL 2008 R2


CLR建置方法參考:

如何在SQL Server中加入 C# CLR Function:
https://www.uuu.com.tw/Public/content/article/18/20180402.htm

https://dotblogs.com.tw/rockchang/2016/06/07/141319




2019年1月1日 星期二

[C#] 取得檔案路徑相關資訊



參考:http://rojerchen.blogspot.com/2013/02/c.html


            string file = @"d:\abc\123.txt";

            //string file = @"d:\abc\";

            string s0 = Path.GetFileName(file); //取得完整檔名 > 123.txt

            string s1 = Path.GetFileNameWithoutExtension(file); //取得檔案名,不包含副檔名,本例得到 123
           
            string s2 = Path.GetExtension(file); //取得副檔名 txt

            string s3 = Path.GetPathRoot(file); //取得根目錄 d:\a

            string s4 = Path.GetFullPath(file); //取得路徑 d:\abc\123.txt



 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template