* Difference between Set and Select
Ans:
1) Set is a ANSI standard for variable assignment.
Select is a Non-ANSI standard when assigning variables.We can assign only one variable at a time
2) We can assign multiple variable at a time.When assigning from a query that returns more than one value, SET will fail with an error.
When assigning from a query that returns more than one value, SELECT will assign the last value returned by the query and hide the fact that the query returned
* What is Network Packet Size in SQL
Ans:
NPS(Network Packet Size) is the size of the TDS (tabular data stream) packets used to communicate between your applications and your relational database engine and default packet size is 4 kilobytes and its manily depends on network packet size configuration option.
* How many different locks in SQL SERVER
Ans:
(1)Intent
(2)shared
(3)Update
(4)Exclusive
(5)Schema
(6)Bulk Update
* Diffrence between temp table and table variable
Ans:
(1)Temp Tables are created in the SQL Server TEMPDB database and therefore require more IO resources and locking. Table Variables and Derived Tables are created in memory.
(2)Temp Tables will generally perform better for large amounts of data that can be worked on using parallelism whereas Table Variables are best used for small amounts of data (I use a rule of thumb of 100 or less rows) where parallelism would not provide a significant performance improvement.
(3)You cannot use a stored procedure to insert data into a Table Variable or Derived Table. For example, the following will work: INSERT INTO #MyTempTable EXEC dbo.GetPolicies_sp whereas the following will generate an error: INSERT INTO @MyTableVariable EXEC dbo.GetPolicies_sp.
(4)Derived Tables can only be created from a SELECT statement but can be used within an Insert, Update, or Delete statement.
(5) In order of scope endurance, Temp Tables extend the furthest in scope, followed by Table Variables, and finally Derived Tables.
* What is Cursor
Ans:
Cursor is a database object used by applications to manipulate data in a set on a row-by-row basis, instead of the typical SQL commands that operate on all the rows in the set at one time. For example, you can use cursor to include a list of all user databases and make multiple operations against each database by passing each database name as a variable
* Write some disadvantage of Cursor
Ans:
Cursor plays there row quite nicely but although there are some disadvantage of Cursor . Because we know cursor doing roundtrip it will make network line busy and also make time consuming methods. First of all select query gernate output and after that cursor goes one by one so roundtrip happen.Another disadvange of cursor are ther are too costly because they require lot of resources and temporary storage so network is quite busy.
* Can you tell me the difference between DELETE and TRUNCATE commands
Ans:
Delete command removes the rows from a table based on the condition that we provide with a WHERE clause. Truncate will actually remove all the rows from a table and there will be no data in the table after we run the truncate command.
Discover innovative solutions, best practices, and cutting-edge technologies in enterprise architecture
Wednesday, December 30, 2009
Thursday, December 24, 2009
How to pad a numeric type column with leading zeros?
Execute the following Microsoft SQL Server T-SQL example scripts to demonstrate SQL padding of numbers and strings with leading and trailing zeros as well as with other designated characters, and techniques
for removing (trim) leading zeros.
for removing (trim) leading zeros.
-- SQL Server leading zero - T-SQL padding numbers - lpad tsql - sql pad zero SELECT ListPrice, Padded=RIGHT('0000000000' + CONVERT(VARCHAR,ListPrice), 10) FROM AdventureWorks2008.Production.Product WHERE ListPrice > 0.0 ------------ -- T SQL pad leading zeros - transact sql leading zeros SELECT ProductID, ReorderPoint = REPLACE(STR(ReorderPoint, 6), SPACE(1), '0') FROM AdventureWorks2008.Production.Product /* ProductID ReorderPoint 1 000750 2 000750 3 000600 */ ------------ -- SQL Server leading zero - SQL leading zeros - sql server pad leading zero USE AdventureWorks2008; DECLARE @Number int = 789 SELECT RIGHT ('000000'+ CAST (@Number AS varchar), 6) -- 000789 ------------ USE AdventureWorks; -- SQL padding salary pay rate money data type with leading zeroes -- SQL left pad number - prefix number with zeros - sql server leading zero -- SQL convert number to text - cast number to varchar string SELECT EmployeeID, Rate, PaddedRate = RIGHT(REPLICATE('0',8) + CAST(Rate AS VARCHAR(8)),8) FROM HumanResources.EmployeePayHistory /* Partial results EmployeeID Rate PaddedRate 1 12.45 00012.45 2 13.4615 00013.46 3 43.2692 00043.27 */ -- SQL zero padding ListPrice money data type - t sql leading zero -- SQL left pad - T-SQL string concatenation - sql concat -- SQL convert number to string - pad numeric with zeros SELECT ProductID, ListPrice, PaddedListPrice = RIGHT(REPLICATE('0', 8) + CAST(ListPrice AS VARCHAR(8)),8) FROM Production.Product /* Results sample ProductID ListPrice PaddedListPrice 965 742.35 00742.35 */ -- SQL month leading zero - sql pad month number with zero SELECT RIGHT('0' + convert(varchar(2), month(GetDate())), 2) -- 06 ---------- -- trim leading zeros - sql trim leading zeros - remove leading zeros sql USE AdventureWorks2008; DECLARE @num varchar(32)= '00091234560' SELECT right(@num, len(@num)+1 - patindex('%[^0]%', @num)) -- 91234560 ------------ -- SQL pad numeric data type - SQL pad digits - transact sql leading zeros -- SQL pad with leading zeroes - append leading zeros - T-SQL top function -- SQL pad with trailing zeroes - MSSQL append trailing zeros -- SQL cast money to numeric - cast numeric to string - mssql newid function SELECT TOP (5) ProductName = Name, ListPrice = RIGHT(REPLICATE('0', 10) + CAST(CAST(ListPrice AS NUMERIC(9,3)) AS VARCHAR) ,10) FROM AdventureWorks.Production.Product ORDER BY NEWID() /* ProductName ListPrice LL Mountain Frame - Black, 40 000249.790 HL Touring Frame - Yellow, 46 001003.910 Bike Wash - Dissolver 000007.950 Metal Sheet 7 000000.000 HL Road Frame - Red, 56 001431.500 */ ---------- -- PAD leading zeros function - sql server leading zeros - UDF USE AdventureWorks2008; GO CREATE FUNCTION fnPadNumber (@n DECIMAL(26,2), @length TINYINT) RETURNS VARCHAR(32) AS BEGIN RETURN ( replicate('0',@length - len(convert(VARCHAR(32),@n))) + convert(VARCHAR(32),@n)) END GO SELECT dbo.fnPadNumber(1234567890.12,16) -- 0001234567890.12 ------------ -- T SQL computed column zero padding - sql generate alphanumeric sequence USE tempdb; -- SQL Server 2008 T-SQL CREATE TABLE Celebrity ( ID INT IDENTITY ( 1 , 1 ) PRIMARY KEY, CelebrityID AS 'CEL' + RIGHT('0000' + CAST( ID as varchar),5), -- computed column FirstName VARCHAR(32), LastName VARCHAR(32), ModifiedDate DATE DEFAULT getdate()) GO INSERT Celebrity (FirstName, LastName) VALUES('Jennifer','Aniston'), ('Drew','Barrymore'), ('Diana','Princess of Wales'), ('Tom','Jones'), ('Lucille','Ball'), ('Frank','Sinatra'), ('Elvis','Presley') SELECT * FROM Celebrity GO -- CelebrityID is zero padded alphanumeric sequence /* ID CelebrityID FirstName LastName ModifiedDate 1 CEL00001 Jennifer Aniston 2012-07-04 2 CEL00002 Drew Barrymore 2012-07-04 3 CEL00003 Diana Princess of Wales 2012-07-04 4 CEL00004 Tom Jones 2012-07-04 5 CEL00005 Lucille Ball 2012-07-04 6 CEL00006 Frank Sinatra 2012-07-04 7 CEL00007 Elvis Presley 2012-07-04 */ -- Cleanup demo DROP TABLE Celebrity GO ------------ -- SQL removing leading zeros when no spaces in string - trimming Leading Zeros USE AdventureWorks2008; DECLARE @NumberString varchar(16)='000000246' SELECT REPLACE(LTRIM(REPLACE(@NumberString, '0', ' ')), ' ', '0') -- 246 ------------ -- SQL remove leading zeros - sql trim leading zeros - numeric test DECLARE @StringWithLeadingZeros VARCHAR(12) = '000000654321' SELECT CAST(CAST(@StringWithLeadingZeros AS INT) AS VARCHAR(10)) WHERE ISNUMERIC (@StringWithLeadingZeros)=1 -- 654321 ------------ -- LPAD & RPAD string scalar-valued user-defined functions (UDF) USE AdventureWorks; GO -- Left pad string function CREATE FUNCTION LPAD (@SourceString VARCHAR(MAX), @FinalLength INT, @PadChar CHAR(1)) RETURNS VARCHAR(MAX) AS BEGIN RETURN (SELECT Replicate(@PadChar,@FinalLength - Len(@SourceString)) + @SourceString) END GO -- T-SQL Test left padding SELECT LeftPaddedString = dbo.LPAD(Cast(84856 AS VARCHAR),12,'0') GO -- 000000084856 -- MSSQL right pad string function CREATE FUNCTION RPAD (@SourceString VARCHAR(MAX), @FinalLength INT, @PadChar CHAR(1)) RETURNS VARCHAR(MAX) AS BEGIN RETURN (SELECT @SourceString + Replicate(@PadChar,@FinalLength - Len(@SourceString))) END GO -- Test right padding SELECT RightPaddedString = dbo.RPAD(Cast(84856 AS VARCHAR),12,'*') GO -- 84856******* ---------- -- Padding a money column with leading zeroes - sql convert leading zero -- SQL convert money data type to string SELECT PaddedUnitPrice = RIGHT(replicate('0',20) + convert(varchar,UnitPrice,1), 20) FROM Northwind.dbo.Products /* Partial results PaddedUnitPrice 00000000000000018.00 00000000000000019.00 00000000000000010.00 00000000000000022.00 */ /**************** Zero padding other numeric data ****************/ -- SQL Server 2008 version featuring the LEFT function -- SQL convert integer to text - convert integer to varchar USE AdventureWorks2008; DECLARE @InputNumber int = 522, @OutputLength tinyint = 12 DECLARE @PaddedString char(12) SET @PaddedString = LEFT( replicate( '0', @OutputLength ), @OutputLength - len( @InputNumber ) ) + convert( varchar(12), @InputNumber) SELECT PaddedNumber=@PaddedString /* Result PaddedNumber 000000000522 */ -- SQL format currency and pad with leading spaces -- SQL Server lpad to 9 characters SELECT TOP (3) ProductName=Name, Price= CONVERT(char(9), ListPrice, 1) FROM Production.Product WHERE ListPrice > 0.0 ORDER BY Newid() /* ProductName Price LL Touring Frame - Blue, 62 333.42 LL Road Seat Assembly 133.34 Road-250 Red, 58 2,443.35 */ ------------ -- Padding with zeroes in the middle of string DECLARE @Number varchar(10) SET @Number = '99999' PRINT 'TRK' + REPLICATE('0', 12 - LEN(@Number)) + @Number SELECT [Zero Padding]='TRK' + REPLICATE('0', 12 - LEN(@Number)) + @Number -- Result: TRK000000099999 -- Applying the STUFF string function for zero padding -- SQL convert integer data type to string DECLARE @SerialNo int, @OutputSize tinyint SET @OutputSize = 10 SET @SerialNo = 6543 SELECT PaddedSerialNo = STUFF(replicate('0', @OutputSize), @OutputSize - len(@SerialNo)+1, len(@SerialNo), convert(varchar(9),@SerialNo)) -- Result: 0000006543 -- SQL pad integer with 0-s -- SQL str function - numeric to character conversion SELECT TOP 5 CAST(replace(str(ProductID,6),' ','0') AS char(6)) AS ProdID FROM AdventureWorks.Production.Product ORDER BY Name /* Results ProdID 000001 000879 000712 000003 000002 */ -- SQL pad string with character -- SQL create function -- SQL user-defined function CREATE FUNCTION dbo.fnLeftPadString ( @Input VARCHAR(255), @PadChar CHAR(1), @LengthToPad TINYINT ) RETURNS VARCHAR(255) AS BEGIN DECLARE @InputLen TINYINT SET @InputLen = LEN(@Input) RETURN CASE WHEN @InputLen < @LengthToPad THEN REPLICATE(@PadChar, @LengthToPad - @InputLen) + @Input ELSE @Input END -- CASE END -- UDF GO -- SQL pad string – left padding - SQL left pad with asterisk -- SQL check printing - SQL currency formatting DECLARE @DollarAmount varchar(20) SET @DollarAmount = '234.40' SELECT PaddedString='$'+dbo.fnLeftPadString(@DollarAmount, '*', 10) GO -- Result: $****234.40 -- SQL currency formatting with asterisk-fill DECLARE @Amount MONEY SET @Amount = '3534.40' SELECT CurrencyFormat = '$' + REPLACE(Convert(char(12),@Amount,1),' ','*') -- $****3,534.40 SELECT PaddedProductID = dbo.fnLeftPadString (CONVERT(varchar, ProductID), '0', 6), ProductName=Name, ListPrice FROM Production.Product ORDER BY PaddedProductID GO /* Partial results PaddedProductID ProductName ListPrice 000757 Road-450 Red, 48 1457.99 000758 Road-450 Red, 52 1457.99 000759 Road-650 Red, 58 782.99 000760 Road-650 Red, 60 782.99 000761 Road-650 Red, 62 782.99 */ ---------- -- Generating tracking numbers -- SQL pad zeroes WITH cteSequence(SeqNo) AS (SELECT 1 UNION ALL SELECT SeqNo + 1 FROM cteSequence WHERE SeqNo < 1000000) SELECT TOP 100 CAST(('TRK' + REPLICATE('0', 7 - LEN(CAST(SeqNo AS VARCHAR(6)))) + CAST(SeqNo AS VARCHAR(6))) AS VARCHAR(10)) AS TrackingNo FROM cteSequence OPTION (MAXRECURSION 0) GO /* Partial results TrackingNo TRK0000001 TRK0000002 TRK0000003 TRK0000004 TRK0000005 TRK0000006 TRK0000007 */ ---------- -- SQL server pad -- SQL str function -- SQL pad integer -- SQL left pad SELECT TOP (4) StaffName=LastName+', '+FirstName, PaddedEmployeeID = REPLACE(STR(EmployeeID, 6, 0), ' ', '0') FROM HumanResources.Employee e INNER JOIN Person.Contact c ON e.ContactID = c.ContactID ORDER BY NEWID() /* Results StaffName PaddedEmployeeID Dyck, Shelley 000214 Hines, Michael 000039 Ford, Jeffrey 000015 Caron, Rob 000168 */ -- SQL asterisk padding -- SQL pad with asterisk -- SQL right pad SELECT TOP ( 2 * 2 ) AddressID , City+REPLICATE('*', 20-len(City)) AS City , PostalCode FROM AdventureWorks.Person.[Address] WHERE LEN(City) <= 20 ORDER by NEWID() GO /* AddressID City PostalCode 13465 Imperial Beach****** 91932 23217 Corvallis*********** 97330 18548 Milwaukie*********** 97222 24893 Goulburn************ 2580 */ ------------ ------------ -- SQL left pad any size string Alpha with any length string Beta ------------ -- SQL user-defined function - UDF - scalar-valued string function -- T-SQL varchar(max) USE AdventureWorks2008; GO CREATE FUNCTION fnMaxPad (@SourceString VARCHAR(MAX), @PaddingString VARCHAR(MAX), @OutputLength INT) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @WorkString VARCHAR(MAX) = ISNULL(REPLICATE(@PaddingString,@OutputLength - len(ISNULL(@SourceString,0))), '') + @SourceString RETURN RIGHT(@WorkString, @OutputLength) END GO -- Execute UDF SELECT TOP ( 5 ) [SQL Padding Demo] = dbo.fnMaxPad(CONVERT(VARCHAR,FLOOR(ListPrice)),'_/',21) FROM Production.Product ORDER BY NEWID() GO /* Results SQL Padding Demo _/_/_/_/_/_/_/2443.00 /_/_/_/_/_/_/_/_/0.00 /_/_/_/_/_/_/_/147.00 /_/_/_/_/_/_/_/_/0.00 _/_/_/_/_/_/_/1003.00 */ ------------ -- SQL left pad unicode string Alpha with any length unicode string Beta -- MSSQL pad international -- SQL user-defined function - UDF - scalar-value function -- T-SQL nvarchar(max) USE AdventureWorks2008; GO CREATE FUNCTION fnMaxPadInternational (@SourceString NVARCHAR(MAX), @PaddingString NVARCHAR(MAX), @OutputLength INT) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @WorkString NVARCHAR(MAX) = ISNULL(REPLICATE(@PaddingString,@OutputLength - len(ISNULL(@SourceString,0))), '') + @SourceString RETURN RIGHT(@WorkString, @OutputLength) END GO -- Execute UDF SELECT TOP ( 5 ) [SQL Padding Demo] = dbo.fnMaxPadInternational(LEFT(Description,6),'_/',21) FROM Production.ProductDescription ORDER BY NEWID() GO /* Results SQL Padding Demo /_/_/_/_/_/_/_/ล้อ ที่ /_/_/_/_/_/_/_/Roue d /_/_/_/_/_/_/_/شوكة ط /_/_/_/_/_/_/_/Each f /_/_/_/_/_/_/_/Jeu de */ ------------
Reference from sqlusa.com
Saturday, December 19, 2009
How to configure SQL Server 2005 to allow remote connections?
To configure SQL Server 2005 to allow remote connections, complete all the following steps.
• Enable remote connections on the instance of SQL Server that you want to connect to from a remote computer.
• Turn on the SQL Server Browser service.
• Configure the firewall to allow network traffic that is related to SQL Server and to the SQL Server Browser service.
2. On the SQL Server 2005 Surface Area Configuration page, click Surface Area Configuration for Services and Connections.
3. On the Surface Area Configuration for Services and Connections page, expand Database Engine, click Remote Connections, click Local and remote connections, click the appropriate protocol to enable for your environment, and then click Apply.
Note Click OK when you receive the following message:
Changes to Connection Settings will not take effect until you restart the Database Engine service.
4. On the Surface Area Configuration for Services and Connections page, expand Database Engine, click Service, click Stop. wait until the MSSQLSERVER service stops, and then click Start to restart the MSSQLSERVER service.
2.On the SQL Server 2005 Surface Area Configuration page, click Surface Area Configuration for Services and Connections.
3.On the Surface Area Configuration for Services and Connections page, click SQL Server Browser, click Automatic for Startup type, and then click Apply.
Note When you click the Automatic option, the SQL Server Browser service starts automatically every time that you start Microsoft Windows.
4.Click Start, and then click OK.
1. Click Start, point to Programs, point to Microsoft SQL Server 2005, point to Configuration Tools, and then click SQL Server Configuration Manager.
2. In SQL Server Configuration Manager, click the SQL Server Browser service in the right pane, right-click the instance name in the main window, and then click Properties.
3. On the SQL Server Browser Properties page, click the Advanced tab, locate the instance ID in the property list, and then click OK.
To open Windows Firewall, click Start, click Run, type firewall.cpl, and then click OK.
Create an exception for SQL Server 2005 in Windows Firewall
To create an exception for SQL Server 2005 in Windows Firewall, follow these steps:
1. In Windows Firewall, click the Exceptions tab, and then click Add Program.
2. In the Add a Program window, click Browse.
3. Click the C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe executable program, click Open, and then click OK.
Note The path may be different depending on where SQL Server 2005 is installed. MSSQL.1 is a placeholder for the instance ID that you obtained in step 3 of the previous procedure.
4. Repeat steps 1 through 3 for each instance of SQL Server 2005 that needs an exception.
Create an exception for the SQL Server Browser service in Windows Firewall
To create an exception for the SQL Server Browser service in Windows Firewall, follow these steps:
1. In Windows Firewall, click the Exceptions tab, and then click Add Program.
2. In the Add a Program window, click Browse.
3. Click the C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe executable program, click Open, and then click OK.
---
Hope this helps everyone.
• Enable remote connections on the instance of SQL Server that you want to connect to from a remote computer.
• Turn on the SQL Server Browser service.
• Configure the firewall to allow network traffic that is related to SQL Server and to the SQL Server Browser service.
Enable remote connections for SQL Server 2005 Express
1. Click Start, point to Programs, point to Microsoft SQL Server 2005, point to Configuration Tools, and then click SQL Server Surface Area Configuration.2. On the SQL Server 2005 Surface Area Configuration page, click Surface Area Configuration for Services and Connections.
3. On the Surface Area Configuration for Services and Connections page, expand Database Engine, click Remote Connections, click Local and remote connections, click the appropriate protocol to enable for your environment, and then click Apply.
Note Click OK when you receive the following message:
Changes to Connection Settings will not take effect until you restart the Database Engine service.
4. On the Surface Area Configuration for Services and Connections page, expand Database Engine, click Service, click Stop. wait until the MSSQLSERVER service stops, and then click Start to restart the MSSQLSERVER service.
Enable the SQL Server Browser service
1.Click Start, point to Programs, point to Microsoft SQL Server 2005, point to Configuration Tools, and then click SQL Server Surface Area Configuration.2.On the SQL Server 2005 Surface Area Configuration page, click Surface Area Configuration for Services and Connections.
3.On the Surface Area Configuration for Services and Connections page, click SQL Server Browser, click Automatic for Startup type, and then click Apply.
Note When you click the Automatic option, the SQL Server Browser service starts automatically every time that you start Microsoft Windows.
4.Click Start, and then click OK.
Create exceptions in Windows Firewall
SQL Server 2005 uses an instance ID as part of the path when you install its program files. To create an exception for each instance of SQL Server, you must identify the correct instance ID. To obtain an instance ID, follow these steps:1. Click Start, point to Programs, point to Microsoft SQL Server 2005, point to Configuration Tools, and then click SQL Server Configuration Manager.
2. In SQL Server Configuration Manager, click the SQL Server Browser service in the right pane, right-click the instance name in the main window, and then click Properties.
3. On the SQL Server Browser Properties page, click the Advanced tab, locate the instance ID in the property list, and then click OK.
To open Windows Firewall, click Start, click Run, type firewall.cpl, and then click OK.
Create an exception for SQL Server 2005 in Windows Firewall
To create an exception for SQL Server 2005 in Windows Firewall, follow these steps:
1. In Windows Firewall, click the Exceptions tab, and then click Add Program.
2. In the Add a Program window, click Browse.
3. Click the C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe executable program, click Open, and then click OK.
Note The path may be different depending on where SQL Server 2005 is installed. MSSQL.1 is a placeholder for the instance ID that you obtained in step 3 of the previous procedure.
4. Repeat steps 1 through 3 for each instance of SQL Server 2005 that needs an exception.
Create an exception for the SQL Server Browser service in Windows Firewall
To create an exception for the SQL Server Browser service in Windows Firewall, follow these steps:
1. In Windows Firewall, click the Exceptions tab, and then click Add Program.
2. In the Add a Program window, click Browse.
3. Click the C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe executable program, click Open, and then click OK.
---
Hope this helps everyone.
Friday, December 18, 2009
Encryption & Decryption : ASCII encoding
The GetByteCount method determines how many bytes result in encoding a set of Unicode characters, and the GetBytes method performs the actual encoding.
Likewise, the GetCharCount method determines how many characters result in decoding a sequence of bytes, and the GetChars and GetString methods perform the actual decoding.
When selecting the ASCII encoding for your applications, consider the following:
* The ASCII encoding is usually appropriate for protocols that require ASCII.
* If your application requires 8-bit encoding, the UTF-8 encoding is recommended over the ASCII encoding. For the characters 0-7F, the results are identical, but use
of UTF-8 avoids data loss by allowing representation of all Unicode characters that are representable. Note that the ASCII encoding has an 8th bit ambiguity that can allow malicious use, but the UTF-8 encoding removes ambiguity about the 8th bit.
* Previous versions of .NET Framework allowed spoofing by merely ignoring the 8th bit. The current version has been changed so that non-ASCII code points fall back during the decoding of bytes.
——————————————————————
Example of ASCII encoding
——————————————————————
SecurityClass.cs
————————–
Default.aspx.cs
———————
——————
--
Happy programming
Likewise, the GetCharCount method determines how many characters result in decoding a sequence of bytes, and the GetChars and GetString methods perform the actual decoding.
When selecting the ASCII encoding for your applications, consider the following:
* The ASCII encoding is usually appropriate for protocols that require ASCII.
* If your application requires 8-bit encoding, the UTF-8 encoding is recommended over the ASCII encoding. For the characters 0-7F, the results are identical, but use
of UTF-8 avoids data loss by allowing representation of all Unicode characters that are representable. Note that the ASCII encoding has an 8th bit ambiguity that can allow malicious use, but the UTF-8 encoding removes ambiguity about the 8th bit.
* Previous versions of .NET Framework allowed spoofing by merely ignoring the 8th bit. The current version has been changed so that non-ASCII code points fall back during the decoding of bytes.
——————————————————————
Example of ASCII encoding
——————————————————————
SecurityClass.cs
————————–
public static string EnryptString(string strEncrypted) { byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(strEncrypted); string encryptedConnectionString = Convert.ToBase64String(b); return encryptedConnectionString; } public static string DecryptString(string encrString) { byte[] b = Convert.FromBase64String(encrString); string decryptedConnectionString = System.Text.ASCIIEncoding.ASCII.GetString(b); return decryptedConnectionString; }
Default.aspx.cs
———————
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string Password = “SandeepMRamani”; lblOriginal.Text = Password; lblEncryption.Text = SecurityClass.EnryptString(Password); lblDecryption.Text = SecurityClass.DecryptString(lblEncryption.Text); } }Default.aspx
——————
<div align=”center” style=”font-size:xx-large;”> <h1> Encryption / Decryption Example </h1> <hr /> Original String : <asp:Label ID=”lblOriginal” style=”font-weight:bolder;” runat=”server” Text=”"></asp:Label> <br /> Encrypted Text : <asp:Label ID=”lblEncryption” style=”font-weight:bolder;” runat=”server” Text=”"></asp:Label> <br /> Decrypted Text : <asp:Label ID=”lblDecryption” style=”font-weight:bolder;” runat=”server” Text=”"></asp:Label> <hr /> </div>
--
Happy programming
Differences between varchar and nvarchar in SQL Server
=>SQL Server 2000 and SQL Server 7, a row cannot exceed 8000 bytes in size. This means that a VARBINARY column can only store 8000 bytes (assuming it is the only column in a table), a VARCHAR column can store up to 8000 characters and an NVARCHAR column can store up to 4000 characters (2 bytes per unicode character). This limitation stems from the 8 KB internal page size SQL Server uses to save data to disk.
To store more data in a single column, you needed to use the TEXT, NTEXT, or IMAGE data types (BLOBs) which are stored in a collection of 8 KB data pages that are separate from the data pages that store the other data in the same table. These data pages are arranged in a B-tree structure. BLOBs are hard to work with and manipulate. They cannot be used as variables in a procedure or a function and they cannot be used inside string functions such as REPLACE, CHARINDEX or SUBSTRING. In most cases, you have to use READTEXT, WRITETEXT, and UPDATETEXT commands to manipulate BLOBs.
To solve this problem, Microsoft introduced the VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX) data types in SQL Server 2005. These data types can hold the same amount of data BLOBs can hold (2 GB) and they are stored in the same type of data pages used for other data types. When data in a MAX data type exceeds 8 KB, an over-flow page is used. SQL Server 2005 automatically assigns an over-flow indicator to the page and knows how to manipulate data rows the same way it manipulates other data types. You can declare variables of MAX data types inside a stored procedure or function and even pass them as variables. You can also use them inside string functions.
The broad range of data types in SQL Server can sometimes throw people through a loop, especially when the data types seem to be highly interchangeable. Two in particular that constantly spark questions are VARCHAR and NVARCHAR: what's the difference between the two, and how important is the difference? VARCHAR is an abbreviation for variable-length character string. It's a string of text characters that can be as large as the page size for the database table holding the column in question. The size for a table page is 8,196 bytes, and no one row in a table can be more than 8,060 characters. This in turn limits the maximum size of a VARCHAR to 8,000 bytes.
The "N" in NVARCHAR means uNicode. Essentially, NVARCHAR is nothing more than a VARCHAR that supports two-byte characters. The most common use for this sort of thing is to store character data that is a mixture of English and non-English symbols — in my case, English and Japanese.
The key difference between the two data types is how they're stored. VARCHAR is stored as regular 8-bit data. But NVARCHAR strings are stored in the database as UTF-16 — 16 bits or two bytes per character, all the time — and converted to whatever codepage is being used by the database connection on output (typically UTF-8). That said, NVARCHAR strings have the same length restrictions as their VARCHAR cousins — 8,000 bytes. However, since NVARCHARs use two bytes for each character, that means a given NVARCHAR can only hold 4,000 characters (not bytes) maximum. So, the amount of storage needed for NVARCHAR entities is going to be twice whatever you'd allocate for a plain old VARCHAR.
Because of this, some people may not want to use NVARCHAR universally, and may want to fall back on VARCHAR — which takes up less space per row — whenever possible.
To store more data in a single column, you needed to use the TEXT, NTEXT, or IMAGE data types (BLOBs) which are stored in a collection of 8 KB data pages that are separate from the data pages that store the other data in the same table. These data pages are arranged in a B-tree structure. BLOBs are hard to work with and manipulate. They cannot be used as variables in a procedure or a function and they cannot be used inside string functions such as REPLACE, CHARINDEX or SUBSTRING. In most cases, you have to use READTEXT, WRITETEXT, and UPDATETEXT commands to manipulate BLOBs.
To solve this problem, Microsoft introduced the VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX) data types in SQL Server 2005. These data types can hold the same amount of data BLOBs can hold (2 GB) and they are stored in the same type of data pages used for other data types. When data in a MAX data type exceeds 8 KB, an over-flow page is used. SQL Server 2005 automatically assigns an over-flow indicator to the page and knows how to manipulate data rows the same way it manipulates other data types. You can declare variables of MAX data types inside a stored procedure or function and even pass them as variables. You can also use them inside string functions.
The broad range of data types in SQL Server can sometimes throw people through a loop, especially when the data types seem to be highly interchangeable. Two in particular that constantly spark questions are VARCHAR and NVARCHAR: what's the difference between the two, and how important is the difference? VARCHAR is an abbreviation for variable-length character string. It's a string of text characters that can be as large as the page size for the database table holding the column in question. The size for a table page is 8,196 bytes, and no one row in a table can be more than 8,060 characters. This in turn limits the maximum size of a VARCHAR to 8,000 bytes.
The "N" in NVARCHAR means uNicode. Essentially, NVARCHAR is nothing more than a VARCHAR that supports two-byte characters. The most common use for this sort of thing is to store character data that is a mixture of English and non-English symbols — in my case, English and Japanese.
The key difference between the two data types is how they're stored. VARCHAR is stored as regular 8-bit data. But NVARCHAR strings are stored in the database as UTF-16 — 16 bits or two bytes per character, all the time — and converted to whatever codepage is being used by the database connection on output (typically UTF-8). That said, NVARCHAR strings have the same length restrictions as their VARCHAR cousins — 8,000 bytes. However, since NVARCHARs use two bytes for each character, that means a given NVARCHAR can only hold 4,000 characters (not bytes) maximum. So, the amount of storage needed for NVARCHAR entities is going to be twice whatever you'd allocate for a plain old VARCHAR.
Because of this, some people may not want to use NVARCHAR universally, and may want to fall back on VARCHAR — which takes up less space per row — whenever possible.
Thursday, December 17, 2009
How to dynamically adjust an iframe’s height?
I was looking to display content of the other aspx page inside iframe but i wasnt able to adjust the height of the iframe. so try out this solution to resolve it.
Insert iframe on page
Use this javascript to resize iframe based on the height & width of child page
What does this code do? When the body of the parent frame loads, it looks up the document element “childframe” which corresponds to the iframe. Then the page calls a function resizeFrame(). The function sets the height of the frame to be the scrollHeight, which effectively removes the scrollbar.
happy programming!
Insert iframe on page
<iframe scrolling='no' frameborder='0' id='frmid' src=’getad.aspx' onload='javascript:resizeIframe(this);'> </iframe>
Use this javascript to resize iframe based on the height & width of child page
<script language="javascript" type="text/javascript"> function resizeIframe(obj) { obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px'; obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px'; } </script>
What does this code do? When the body of the parent frame loads, it looks up the document element “childframe” which corresponds to the iframe. Then the page calls a function resizeFrame(). The function sets the height of the frame to be the scrollHeight, which effectively removes the scrollbar.
happy programming!
Wednesday, December 2, 2009
Parameter Sniffing and OPTIMZE FOR
Parameter Sniffing refers to a process whereby SQL Server’s execution environment “sniffs” the parameter values during first invocation, and passes it along to the query optimizer so that they can be used to generate optimal query execution plans.
While parameter sniffing is certainly a powerful feature, it can cause problems when a procedure’s plan happens to have been kicked out of the procedure cache (or was never in it) just prior to the procedure being called with atypical parameter values. This can result in a plan that is skewed toward atypical use, one that is not optimal when called with typical values. Since, once cached, a query plan can be reused for parameter values that vary widely, the ideal situation is to have a plan in the cache that covers the typical usage of the procedure as much as possible. If a plan makes it into the cache that is oriented toward atypical parameter values, it can have a devastating effect on performance when executed with typical values.
Click here to read full article.
While parameter sniffing is certainly a powerful feature, it can cause problems when a procedure’s plan happens to have been kicked out of the procedure cache (or was never in it) just prior to the procedure being called with atypical parameter values. This can result in a plan that is skewed toward atypical use, one that is not optimal when called with typical values. Since, once cached, a query plan can be reused for parameter values that vary widely, the ideal situation is to have a plan in the cache that covers the typical usage of the procedure as much as possible. If a plan makes it into the cache that is oriented toward atypical parameter values, it can have a devastating effect on performance when executed with typical values.
Click here to read full article.
Subscribe to:
Posts (Atom)