tag:blogger.com,1999:blog-74393710014909451692024-02-19T07:12:40.106+00:00Percy ReyesMy thoughts on cryptography and SQL database management
Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.comBlogger98125tag:blogger.com,1999:blog-7439371001490945169.post-4939538356516719432023-09-05T18:24:00.002+01:002023-09-05T18:24:07.833+01:00Probabilistic Estimation of the Algebraic Degree of Boolean Functions<p>Recently, our cryptography paper on "Probabilistic estimation of the algebraic degree of Boolean functions" was published in Springer Journal as a result of about 3 years of research: <a href="https://lnkd.in/eyEw5pce">https://lnkd.in/eyEw5pce</a></p><p>๐๐๐ฌ๐ญ๐ซ๐๐๐ญ: ๐๐ฉ๐ฆ ๐ข๐ญ๐จ๐ฆ๐ฃ๐ณ๐ข๐ช๐ค ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ ๐ช๐ด ๐ข๐ฏ ๐ช๐ฎ๐ฑ๐ฐ๐ณ๐ต๐ข๐ฏ๐ต ๐ฑ๐ข๐ณ๐ข๐ฎ๐ฆ๐ต๐ฆ๐ณ ๐ฐ๐ง ๐๐ฐ๐ฐ๐ญ๐ฆ๐ข๐ฏ ๐ง๐ถ๐ฏ๐ค๐ต๐ช๐ฐ๐ฏ๐ด ๐ถ๐ด๐ฆ๐ฅ ๐ช๐ฏ ๐ค๐ณ๐บ๐ฑ๐ต๐ฐ๐จ๐ณ๐ข๐ฑ๐ฉ๐บ. ๐๐ฉ๐ฆ๐ฏ ๐ข ๐ง๐ถ๐ฏ๐ค๐ต๐ช๐ฐ๐ฏ ๐ช๐ฏ ๐ข ๐ญ๐ข๐ณ๐จ๐ฆ ๐ฏ๐ถ๐ฎ๐ฃ๐ฆ๐ณ ๐ฐ๐ง ๐ท๐ข๐ณ๐ช๐ข๐ฃ๐ญ๐ฆ๐ด ๐ช๐ด ๐ฏ๐ฐ๐ต ๐จ๐ช๐ท๐ฆ๐ฏ ๐ฆ๐น๐ฑ๐ญ๐ช๐ค๐ช๐ต๐ญ๐บ ๐ช๐ฏ ๐ข๐ญ๐จ๐ฆ๐ฃ๐ณ๐ข๐ช๐ค ๐ฏ๐ฐ๐ณ๐ฎ๐ข๐ญ ๐ง๐ฐ๐ณ๐ฎ, ๐ช๐ต ๐ช๐ด ๐ถ๐ด๐ถ๐ข๐ญ๐ญ๐บ ๐ฏ๐ฐ๐ต ๐ง๐ฆ๐ข๐ด๐ช๐ฃ๐ญ๐ฆ ๐ต๐ฐ ๐ค๐ฐ๐ฎ๐ฑ๐ถ๐ต๐ฆ ๐ช๐ต๐ด ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ, ๐ด๐ฐ ๐ธ๐ฆ ๐ฏ๐ฆ๐ฆ๐ฅ ๐ต๐ฐ ๐ฆ๐ด๐ต๐ช๐ฎ๐ข๐ต๐ฆ ๐ช๐ต. ๐๐ฆ ๐ฑ๐ณ๐ฐ๐ฑ๐ฐ๐ด๐ฆ ๐ข ๐ฑ๐ณ๐ฐ๐ฃ๐ข๐ฃ๐ช๐ญ๐ช๐ด๐ต๐ช๐ค ๐ต๐ฆ๐ด๐ต ๐ง๐ฐ๐ณ ๐ฅ๐ฆ๐ค๐ช๐ฅ๐ช๐ฏ๐จ ๐ธ๐ฉ๐ฆ๐ต๐ฉ๐ฆ๐ณ ๐ต๐ฉ๐ฆ ๐ข๐ญ๐จ๐ฆ๐ฃ๐ณ๐ข๐ช๐ค ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ ๐ฐ๐ง ๐ข ๐๐ฐ๐ฐ๐ญ๐ฆ๐ข๐ฏ ๐ง๐ถ๐ฏ๐ค๐ต๐ช๐ฐ๐ฏ ๐ง ๐ช๐ด ๐ฃ๐ฆ๐ญ๐ฐ๐ธ ๐ข ๐ค๐ฆ๐ณ๐ต๐ข๐ช๐ฏ ๐ท๐ข๐ญ๐ถ๐ฆ ๐ฌ. ๐๐ง ๐ต๐ฉ๐ฆ ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ ๐ช๐ด ๐ช๐ฏ๐ฅ๐ฆ๐ฆ๐ฅ ๐ฃ๐ฆ๐ญ๐ฐ๐ธ ๐ฌ, ๐ต๐ฉ๐ฆ๐ฏ ๐ง ๐ธ๐ช๐ญ๐ญ ๐ข๐ญ๐ธ๐ข๐บ๐ด ๐ฑ๐ข๐ด๐ด ๐ต๐ฉ๐ฆ ๐ต๐ฆ๐ด๐ต, ๐ฐ๐ต๐ฉ๐ฆ๐ณ๐ธ๐ช๐ด๐ฆ ๐ง ๐ธ๐ช๐ญ๐ญ ๐ง๐ข๐ช๐ญ ๐ฆ๐ข๐ค๐ฉ ๐ช๐ฏ๐ด๐ต๐ข๐ฏ๐ค๐ฆ ๐ฐ๐ง ๐ต๐ฉ๐ฆ ๐ต๐ฆ๐ด๐ต ๐ธ๐ช๐ต๐ฉ ๐ข ๐ฑ๐ณ๐ฐ๐ฃ๐ข๐ฃ๐ช๐ญ๐ช๐ต๐บ ๐ฅ๐ต_๐ฌ(๐ง), ๐ธ๐ฉ๐ช๐ค๐ฉ ๐ช๐ด ๐ค๐ญ๐ฐ๐ด๐ฆ๐ญ๐บ ๐ณ๐ฆ๐ญ๐ข๐ต๐ฆ๐ฅ ๐ต๐ฐ ๐ต๐ฉ๐ฆ ๐ข๐ท๐ฆ๐ณ๐ข๐จ๐ฆ ๐ฏ๐ถ๐ฎ๐ฃ๐ฆ๐ณ ๐ฐ๐ง ๐ฎ๐ฐ๐ฏ๐ฐ๐ฎ๐ช๐ข๐ญ๐ด ๐ฐ๐ง ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ ๐ฌ ๐ฐ๐ง ๐ต๐ฉ๐ฆ ๐ฑ๐ฐ๐ญ๐บ๐ฏ๐ฐ๐ฎ๐ช๐ข๐ญ๐ด ๐ธ๐ฉ๐ช๐ค๐ฉ ๐ข๐ณ๐ฆ ๐ข๐ง๐ง๐ช๐ฏ๐ฆ ๐ฆ๐ฒ๐ถ๐ช๐ท๐ข๐ญ๐ฆ๐ฏ๐ต ๐ต๐ฐ ๐ง. ๐๐ฉ๐ฆ ๐ต๐ฆ๐ด๐ต ๐ฉ๐ข๐ด ๐ข ๐จ๐ฐ๐ฐ๐ฅ ๐ข๐ค๐ค๐ถ๐ณ๐ข๐ค๐บ ๐ฐ๐ฏ๐ญ๐บ ๐ช๐ง ๐ต๐ฉ๐ช๐ด ๐ฑ๐ณ๐ฐ๐ฃ๐ข๐ฃ๐ช๐ญ๐ช๐ต๐บ ๐ฅ๐ต_๐ฌ(๐ง) ๐ฐ๐ง ๐ง๐ข๐ช๐ญ๐ช๐ฏ๐จ ๐ต๐ฉ๐ฆ ๐ต๐ฆ๐ด๐ต ๐ช๐ด ๐ฏ๐ฐ๐ต ๐ต๐ฐ๐ฐ ๐ด๐ฎ๐ข๐ญ๐ญ. ๐๐ฆ ๐ช๐ฏ๐ช๐ต๐ช๐ข๐ต๐ฆ ๐ต๐ฉ๐ฆ ๐ด๐ต๐ถ๐ฅ๐บ ๐ฐ๐ง ๐ฅ๐ต_๐ฌ(๐ง) ๐ฃ๐บ ๐ด๐ฉ๐ฐ๐ธ๐ช๐ฏ๐จ ๐ต๐ฉ๐ข๐ต ๐ช๐ฏ ๐ต๐ฉ๐ฆ ๐ฑ๐ข๐ณ๐ต๐ช๐ค๐ถ๐ญ๐ข๐ณ ๐ค๐ข๐ด๐ฆ ๐ธ๐ฉ๐ฆ๐ฏ ๐ต๐ฉ๐ฆ ๐ฅ๐ฆ๐จ๐ณ๐ฆ๐ฆ ๐ฐ๐ง ๐ง ๐ช๐ด ๐ข๐ค๐ต๐ถ๐ข๐ญ๐ญ๐บ ๐ฆ๐ฒ๐ถ๐ข๐ญ ๐ต๐ฐ ๐ฌ, ๐ต๐ฉ๐ฆ ๐ฑ๐ณ๐ฐ๐ฃ๐ข๐ฃ๐ช๐ญ๐ช๐ต๐บ ๐ธ๐ช๐ญ๐ญ ๐ฃ๐ฆ ๐ช๐ฏ ๐ต๐ฉ๐ฆ ๐ช๐ฏ๐ต๐ฆ๐ณ๐ท๐ข๐ญ (0.288788, 0.5], ๐ข๐ฏ๐ฅ ๐ต๐ฉ๐ฆ๐ณ๐ฆ๐ง๐ฐ๐ณ๐ฆ ๐ข ๐ด๐ฎ๐ข๐ญ๐ญ ๐ฏ๐ถ๐ฎ๐ฃ๐ฆ๐ณ ๐ฐ๐ง ๐ณ๐ถ๐ฏ๐ด ๐ฐ๐ง ๐ต๐ฉ๐ฆ ๐ต๐ฆ๐ด๐ต ๐ธ๐ช๐ญ๐ญ ๐ฃ๐ฆ ๐ด๐ถ๐ง๐ง๐ช๐ค๐ช๐ฆ๐ฏ๐ต ๐ต๐ฐ ๐จ๐ช๐ท๐ฆ, ๐ธ๐ช๐ต๐ฉ ๐ท๐ฆ๐ณ๐บ ๐ฉ๐ช๐จ๐ฉ ๐ฑ๐ณ๐ฐ๐ฃ๐ข๐ฃ๐ช๐ญ๐ช๐ต๐บ, ๐ต๐ฉ๐ฆ ๐ค๐ฐ๐ณ๐ณ๐ฆ๐ค๐ต ๐ข๐ฏ๐ด๐ธ๐ฆ๐ณ. ๐๐น๐ข๐ค๐ต ๐ท๐ข๐ญ๐ถ๐ฆ๐ด ๐ฐ๐ง ๐ฅ๐ต_๐ฌ(๐ง) ๐ง๐ฐ๐ณ ๐ข๐ญ๐ญ ๐ต๐ฉ๐ฆ ๐ฑ๐ฐ๐ญ๐บ๐ฏ๐ฐ๐ฎ๐ช๐ข๐ญ๐ด ๐ช๐ฏ 8 ๐ท๐ข๐ณ๐ช๐ข๐ฃ๐ญ๐ฆ๐ด ๐ธ๐ฆ๐ณ๐ฆ ๐ค๐ฐ๐ฎ๐ฑ๐ถ๐ต๐ฆ๐ฅ ๐ถ๐ด๐ช๐ฏ๐จ ๐ต๐ฉ๐ฆ ๐ณ๐ฆ๐ฑ๐ณ๐ฆ๐ด๐ฆ๐ฏ๐ต๐ข๐ต๐ช๐ท๐ฆ๐ด ๐ญ๐ช๐ด๐ต๐ฆ๐ฅ ๐ฃ๐บ ๐๐ฐ๐ถ ๐ข๐ฏ๐ฅ ๐ฃ๐บ ๐๐ข๐ฏ๐จ๐ฆ๐ท๐ช๐ฏ ๐ข๐ฏ๐ฅ ๐๐ฆ๐ข๐ฏ๐ฅ๐ฆ๐ณ.</p>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-40819704609228598342023-09-05T18:19:00.001+01:002023-09-05T18:19:07.007+01:00On Homomorphic Encryption<p>Probably, one of the most exciting recent developments in the field of cryptography is the emergence of homomorphic encryption which is a type of encryption that allows computations to be performed on encrypted data while it remains encrypted, in other words, without the need to decrypt it first. This means that sensitive data can be kept confidential while still being used by third-parties.</p><p>This is achieved through the use of special encryption algorithms that preserve the mathematical structures of the plaintext data, allowing meaningful computations to be performed on the encrypted data while preventing unauthorized access to the actual plaintext data (which is never exposed and remain secure).</p><p>This technology is particularly useful in situations where privacy and security are of great importance, such as in the healthcare industry, where patient data must be kept confidential, or in financial services, where sensitive data such as bank account information needs to be processed securely. <span></span></p><a name='more'></a><p></p><p>In traditional public key cryptography, the encrypted data cannot be used in any meaningful way without first decrypting it. This means that sensitive data must be available in plaintext on computer systems, which can be a significant security risk.</p><p>Overall, homomorphic encryption is an exciting development that has the potential to revolutionise the way we handle and process sensitive data. However, homomorphic cryptography is still in its early stages, and its practical implementation is not feasible yet because it requires significant computing resources which limits its application to certain use cases. </p><p>I hope that quantum computation can provide significant speed advantage and solve some this problem and make homomorphic practical and widely used. However, it is still a long way to build large-scale quantum computers.</p><p>The transition process of UK industry to post-quantum security would certainly require several steps to be taken:</p><p></p><ol style="text-align: left;"><li>First of all, we need to raise awareness and provide education to encourage organizations to recognize the need for post-quantum security. Therefore, a good understanding of the risks and potential consequences of not transitioning to post-quantum security is key.</li><li>Full evaluation of the organization's current security infrastructure and assess the potential impact of switching to post-quantum security, which will surely help organizations to identify their most critical systems and data that need to be protected.</li><li>Organizations need to adopt post-quantum cryptographic technology to ensure their systems and data are secure against quantum attacks. They can work with technology vendors, standards bodies, and research institutions to identify the best post-quantum cryptographic implementations that fit their needs with a vision of a secure adoption of post-quantum technology.</li><li>Post-quantum cryptographic standards need to be developed and adopted so that organizations follow the same security practices, resulting in an easier interoperability and a significant reduction of the risk of fragmentation. Thus, development of standards is mandatory.</li><li>When it comes to implementation it has to be done gradually so that disruption can be minimised. Basically, this implementation can be completed to address specific areas of vulnerability prioritising based on risk assessments.</li><li>Both the new and old cryptographic algorithms need to be tested to ensure that they are well-implemented and secure. Organizations need to build trust in the new mechanisms and provide a smooth transition to post-quantum security.</li><li>The transition to post-quantum security will require collaboration between the government, industry, academia, and research institutions. Only by working together can we ensure that the transition is successful and also secure to use it at large scale. </li></ol><p></p><p>What else needs to happen to transition UK industry to post-quantum security? </p>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-36341717843201741972022-09-11T13:09:00.040+01:002022-10-16T09:50:29.831+01:00Knowing and Protecting Your Data<p>Computer circuitry has crept into nearly everything we use nowadays, and almost all of which gather information from us and about us. As a result, the present is immersed in copious amounts of data, which is stored somewhere and, most of the time, not securely protected. </p><p>Today we are almost entirely reliant on IT departments at work; practically all organisations depend on enterprise-wide applications to support numerous key business processes which create a mountain of information. Needless to say, IT infrastructure and business applications are increasingly โ and usually, unnecessarily โ more complex; <a href="https://www.schneier.com/blog/archives/2022/08/security-and-cheap-complexity.html" target="_blank">complexity is the worst enemy of security</a> โ and sometimes, of performance too. As a consequence, we are losing more control of storage and, therefore, security. The more data we share, the bigger the security risk is. </p><p>Companies always strive to successfully harness the power of data, but unfortunately, this is not the case when it comes to securely accessing data. There are laws about protecting information, but most people are either blissfully unaware of them or careless about them. Many of us know what could happen when our data end up in the wrong hands.<span></span></p><a name='more'></a><p></p><p>Whatโs more, people blame companies for security data breaches, but why do we still expect companies to do all the work for us? is it always someone else's responsibility? What do we do, as individuals, to protect our private data? why do people carelessly keep sharing more and more personal data on the internet? </p><p>Organisations and individuals have something in common: they do not value their data enough to protect it properly, even though they know that leaving their data unprotected puts them under threat from data loss which in turn can tremendously impact their lives and businesses - in terms of reputation, revenue, share value, market share, customer loyalty, etc. </p><p>Gone are the days when data lived peaceably in the data center to be accessed by people working in the same building; today data can be found over the internet resulting in potential data loss, data leaks, and data breaches. Almost everyone is aware of this, but only very few have robust security measures in place. Why? because security is intangible until a disaster happens; for example, this is what exactly has recently happened at Uber: <a href="https://www.schneier.com/blog/archives/2022/09/massive-data-breach-at-uber.html" target="_blank">https://www.schneier.com/blog/archives/2022/09/massive-data-breach-at-uber.html</a>. After that attack, Uber are massively recruiting security professionals. </p><p>With more people going online all the time, security-threat reports show that attackers are now more professional for commercial reasons. This is the business of cyber-crime, which has successfully implemented the same processes used to develop commercial products; for example, criminal gangs use logistics for malware deployment, manufacturing for malware production, investment for money laundering, sales for criminal actions, and business development using the internet for criminal mobility. However, note that many attacks are so easy to carried out because no basic security is in place, which is even more worrying. </p><p>The toughest part of protecting data is finding it. If we do not know where it is, how can we protect it?, for example, it is happening at Facebook: <a href="https://www.schneier.com/blog/archives/2022/09/facebook-has-no-idea-what-data-it-has.html">https://www.schneier.com/blog/archives/2022/09/facebook-has-no-idea-what-data-it-has.html</a>. When an organisation knows what it has and where it is, it can monitor how the data is accessed and used. So, knowing and controlling what we have is key; a wide approach to achieve this is by taking into account the following data-management activities:</p><p></p><ul style="text-align: left;"><li>Creation and application of data-protection policies consistently.</li><li>Discovery, classification and encryption of confidential data.</li><li>Organisation of data storage into tiers.</li><li>Digital right management.</li></ul><p></p><p>Of course, it is vital to harness the power of technology to protect data, but this is difficult to achieve because of people's carelessness. People are weakest link in the security chain and responsible for the failure of security systems. Much of what we know as user errors is because we do not know what we are doing wrong, or even worse, people know the possible consequences of not fixing security issues but they have "no time" to take preventive measures; for example, business applications should not run under privileged rights, but they continue implementing that bad practice. Also, unsurprisingly, week passwords are still being used in so many systems and encryption key management is still really poor. Why? It's evident that many people are careless about security risks and threats. </p><p>While working as a senior SQL database administrator for many years, I usually come across lots of database servers that had hundreds of sysadmin logins used for different purposes including running read-only processes such as reports. Why? the common answer that I got is "just in case" or "it's the way we ensure applications work" or, even worse, "it's the way how it is". </p><p>This attitude toward security is the most worrying aspect to be changed, since security is everybody's responsibility, not someone else's responsibility. So, in order for us to better protect our data we must change our attitude toward security in all aspects. </p>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-12994086358480375762021-06-06T14:34:00.004+01:002022-04-17T16:36:47.616+01:00Cryptology vs. Cryptography vs. Cryptanalysis. What's the Difference?Although the words cryptology, cryptography and cryptanalysis are used interchangeably โ strictly speaking โ they mean different things. Nowadays, we only use the word cryptography for everything; it's indeed a catch-all for a broad range of intertwined topics. Todayโs post not only aims to point out the differences among them but also to show their connections to each other.<div><br /></div><div>To begin with, cryptology is the mathematics, algorithms, and the applications of formulas that underpins cryptography and cryptanalysis. The world of cryptology goes from basic foundations in cryptography (code-making) to modern algebraic
cryptanalysis (code-breaking). So, cryptology is clearly divided into two major
parts: cryptography and cryptanalysis; with strong connections to each
other, which include
cryptographic applications, types of cryptography and their algorithms, code-breaking techniques, information theory, number theory and mathematical
applications to encrypt data and also break ciphers. </div><div><span><a name='more'></a></span><span style="text-align: justify;"><br /></span></div><div><span style="text-align: justify;">To illustrate, some main
cryptography topics are about legal and ethical issues, types of cryptographic algorithms,
cryptosystem components, cryptographic applications, classical cryptographic
algorithms and their methods of breaking, number theory and information theory;
whereas cryptanalysis include code-breaking algorithms for block ciphers,
stream ciphers, hash functions and message authentication codes, and finally
goes a bit deeper into algebraic cryptanalysis on modern approach such as algebraic
coding and optimisation, algebraic attacks, polynomial systems and satisfiability,
Boolean functions, and algorithms for solving polynomial systems.</span><p class="MsoNormal" style="text-align: justify;"><o:p></o:p></p>
<p class="MsoNormal" style="text-align: justify;">Cryptography has raised many human rights issues, ethical issues and also legal issues due to the fact that it can be used for good purposes but also for bad ones. You can read more about this on this post: <a href="https://www.percyreyes.com/2021/03/cryptography-is-everywhere.html" style="text-align: left;">Cryptography is Everywhere</a>.</p><p class="MsoNormal" style="text-align: justify;">Note that there a lot of research being undertaken out there about post-quantum computing and its use for code-breaking. By using
post-quantum computing will be highly likely possible to break any modern
cypher, but there is no proof of that yet; In fact, I think this does not mean the end of security, on the contrary, the best is yet to come!<o:p></o:p></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;">With respect to classical algorithms, some can be done by hand allowing to get a a better understanding of what is involved, such as shift cipher, substitution
cipher, Vigenรจre cipher and permutation cipher. Most of them are outdated,
however, many ideas are still used as components of modern ciphers and also
many of methods of breaking these ciphers are valid for modern ciphers as well,
for instance, exhaustive key search, letter frequency and other statistical
properties of the text, and known/guessed plaintext.</p><p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><o:p></o:p></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">It is widely agreed that cryptographic
algorithms are basically classified into two big categories depending on the number
of keys that are used for encryption and decryption, that is, symmetric cryptography
and public-key (asymmetric) cryptography. The first one uses only one secret
key for encryption and decryption, whereas the latter uses two keys, a public
key for encryption and a private key for decryption. This aspect is
particularly important when it comes to working on breaking cryptographic
algorithms because it is assumed some things in terms of what is available to
the attacker such as the algorithm in use and whether the key is the same or
not.<o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Similarly, symmetric cryptography
can be classified into two parts: block ciphers and stream ciphers. They mostly
recommend using the block cipher AES, and explains the uses of stream cipher in
different applications. For example, RC4 for WEP, WAP, SSL, TLS1.2, A5 for GSM
mobile phones SNOW and ZUC for 4G LTE, ChaCha20 for TLS1.3. Some big names in
cryptography such as Golbreich and Stallings clearly mention in their books the
importance of having a good understanding of the different operation modes of
symmetric cryptography such as ECB, CBC, OFB, CFB, CTR, and GCM. <o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Block ciphers and stream ciphers
have to face multiple types of attacks such as differential attacks and
algebraic attacks, respectively. Also, several works have been done to prevent
differential, the cube and the AIDA attacks, many other types of attacks, the vast majority of which are painstakingly detailed in Antoine Jouxโs book โAlgorithm
Cryptanalysisโ.<o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Stream ciphers have strongly
relationship with certain concepts such as one-time pad, perfect secrecy,
pseudo-random numbers generators, linear feedback, theory about shift registers
(LFSR), NLFSR, shrinking generator, T-function, and IV. There is a special book
that presents these aspects in a very detailed manner such as Stallingsโ book in
which he goes much deeper<w:sdt citation="t" id="-435912278"><!--[if supportFields]><span
style='mso-element:field-begin'></span> CITATION Wil17 \l 1033 <span
style='mso-element:field-separator'></span><![endif]--><span style="mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span>(Stallings, 2017)</span><!--[if supportFields]><span
style='mso-element:field-end'></span><![endif]--></w:sdt>.<o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Besides, hash functions and message
authentication codes (MAC) are also crucial in cryptography. They are used in
tandem with symmetric and public-key cryptography to achieve confidentiality,
authentication, integrity, non-repudiation. In fact, Douglas Stinson in his
book โ</span><i><span style="mso-no-proof: yes;">Cryptography: Theory and
Practice</span></i><span lang="EN-US" style="mso-ansi-language: EN-US;">โ explains
clearly and concisely about hash functions and MAC, giving theorems and
algorithms along with other related-mathematical applications. <o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Talking of public-key cryptography, algorithms
in this area are classified depending on the number theory they use. For
instance, RSA uses integer factorization whereas Diffie Hellman (DH) uses
discrete logarithm and Elliptic Curve (ECC) is based on elliptic curves over
finite fields. Actually, Antoine Joux explains RSA, DH and ECC from the
mathematical and algorithmic cryptanalysis perspective<w:sdt citation="t" id="-1155829383"><!--[if supportFields]><span style='mso-element:field-begin'></span>
CITATION Ant09 \l 1033 <span style='mso-element:field-separator'></span><![endif]--><span style="mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span>(Joux, 2009)</span><!--[if supportFields]><span
style='mso-element:field-end'></span><![endif]--></w:sdt>. In addition, it is vital
to have a very good understanding of number theory when working with public-key
cryptography because the implementation of this type of cryptosystem is
entirely based number theory, so, for example, breaking RSA is all about
finding solutions for integer factorisation.<o:p></o:p></span></p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">With regard to cryptanalysis, it is
all about understanding cryptographic algorithms and finding solutions to break
them. In this area, the most famous techniques to attack all the
types of ciphers go from</span> the very classical approach to the
most sophisticated and modern techniques which make use of algebraic cryptanalysis
and mostly based on Polynomial Systems (especially Multivariate Quadratic),
Algebraic coding and optimisation.</p>
<p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">Essentially, algebraic attack is
based on the main idea of finding and solving a system of multivariate
polynomial equations over a finite field, for example, some algebraic attacks
have been successfully carried out against various stream ciphers based on
LFSRs. In addition, Gregory V. Bard in his book โ</span><i><span style="mso-no-proof: yes;">Algebraic Cryptanalysis</span></i><span lang="EN-US" style="mso-ansi-language: EN-US;">โ, details all the mathematical aspects behind
it, particularly topics such as Grรถbner bases algorithms, linearization, the XL
algorithm, complexity calculation, converting ANF to CNF, NP-Complete problem,
MQ Problem, linear algebra over GF(2), Boolean matrices, and GF(2)-Matrix
Operations. <o:p></o:p></span></p><p class="MsoNormal" style="tab-stops: list 36.0pt 72.0pt; text-align: justify;"><span lang="EN-US" style="mso-ansi-language: EN-US;">It's all for now. I do hope to have cleared some things up. If you have any questions please do let me know in the comment section below. Have a good day!</span></p></div>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-83901624639394955302021-04-26T03:37:00.009+01:002022-02-27T15:56:23.903+00:00Curious About Cryptographic Boolean Functions?In order to have a good understanding of cryptographic Boolean functions, let's get started from scratch, that's, having a look at the very basic concepts. To begin with, all modern computers are composed of very basic logic circuits using very basic gates, called <i>operators </i>which only apply to binary numbers, in other words, <i>0</i> and <i>1</i>. Each type of gate implements a Boolean operation. The finite field ${\mathbb F}_{2}=\{0,1\}$ is also called <i>binary field</i><b>,</b> and it is of special interest because it is particularly efficient for implementation in hardware or on a binary computer. Using these gates, the rules of Boolean algebra may be applied to design circuits that perform a variety of tasks. For example, integrated circuits. Then, these circuits are all put together to build into more powerful modern computers. <span><a name='more'></a></span><div><br /></div><div><span style="font-size: x-large;"><b>The logic gate exclusive-OR</b></span><br /><div>Primarily, the minimum units of electronic devices are called <i>cells</i>. Each cell can have two status: high voltage and low voltage. High voltage stands for TRUE Boolean value and is represented by binary value 1, whereas low voltage stands for FALSE Boolean value and is represented by binary value 0.
There are three fundamental logic gates or operations on binary numbers such as <i>OR</i>, <i>AND</i> and <i>NOT</i>, to connect the cells in terms of their assigned values and to create different sorts of logic circuits. Composite logic gates can be built and expressed in terms of the above-mentioned ones, and in this sense, there is a very particular composite logic gate that is heavily used in cryptography, this is the logic gate <i>exclusive-or</i> (<i>XOR</i> for short), denoted by $\oplus$, which is expressed as $A\oplus B=(A\lor B)\land(\bar{A} \lor \bar{B})$. </div><div><br /></div><div>Interestingly, the final outcome of $A \oplus B$ coincides with the modulo $2$ addition of the binary values of $A$ and $B$, over the finite field ${\mathbb F}_{2}=\{0,1\}$. Also, the logic gate OR also coincides with the multiplication operation over the finite field ${\mathbb F}_{2}$. Note that the basic logic gates $OR$ and $NOT$ can also be represented using the logic gates $XOR$ and $AND$, i.e., $A \lor B=A \oplus B \oplus (A \land B)$; $\bar{A}=A \oplus 1$.
As a result, all these facts lead us to work using functions of logic circuits expressed in terms of $XOR$ and $AND$ operations, called <i>Boolean functions,</i> and the logic cells are represented by something called Boolean variables. Also, these two Boolean operations can be treated as operations over the binary field ${\mathbb F}_{2}$ and many of the results from finite fields can be used. </div><div><br /></div><div>Boolean functions are widely used in cryptography and cryptanalysis, as well as in many other areas. Particularly, Boolean functions are a core component in many stream ciphers, and any potential threat or attack to one of such models will often lead to the attacks to other models. For instance, they are used to develop pseudo-random generators in stream ciphers, S-boxes in block ciphers, and also to build error-correcting codes like Reed-Muller codes and Kerdock codes.</div></div><div><br /></div><div><span style="font-size: x-large;"><b>What exactly is a Boolean function?</b></span></div><div><div><b><span style="font-size: medium;">Definition.</span></b> A Boolean function $f$ in $n$ variables is a map from ${\mathbb F}_{2}^{n}$ to ${\mathbb F}_{2}$. The $(0,1)-sequence$ defined by $(f(x_0 ),f(x_1 ),โฆ ,f(x_(2^n-1) )) $ is called the truth table of $f$, where $x_0= (0,โฆ,0,0),x_1 = (0,โฆ,0,1),โฆ,x_{2^n-1} = (1,โฆ,1,1)$, ordered by lexicographical order. The algebra of all Boolean functions on ${\mathbb F}_2^n$ will be denoted by $B_n$ (Stanica 2017).</div><div>\end{definition}</div><div><br /></div><div>The function $f:{\mathbb F}_2^n\rightarrow {\mathbb F}_2$ is called a Boolean function in $n$ variables, where ${\mathbb F}_2^n$ is the n-dimensional vector space over the binary field ${\mathbb F}_2$. The function $f$ is written as $f(x)=f(x_1,x_2,x_3,โฆ,x_n )$, that is, $x$ is a vector $(x_1,x_2,x_3,โฆ,x_n )$. The vector made of all the outputs of $f(x)$ is called the truth table of $f(x)$, which has dimension $2^n$.</div><div><br /></div><div>The possible values in ${\mathbb F}_2^n$ for the binary vector $x$ can be ordered as the binary representation of an integer, in other words, $x=(x_1,x_2,x_3,โฆ,x_n )=\sum_{i=1}^{n} x_i 2^{n-1}$, the integer goes from $0$ to $2^n-1$, making the corresponding vector goes through all the elements in ${\mathbb F}_2^n$. Note that Boolean variables $x=(x_1,x_2,x_3,โฆ,x_n )$ can be treated as probabilistic variables which take random values from ${\mathbb F}_2^n$ equally likely with uniform probability distribution. As a result, each $x_i$ is an independent variable over $\{0,1\}$, and a Boolean function $f(x)$ is also treated as a function in random variables.</div><div><br /></div><div>There are arithmetical operations on Boolean functions such as the addition of $f(x)\oplus g(x)$ which is the <i>XOR</i> operation of their corresponding outputs, and also the multiplication $f(x)g(x)$ which is the multiplication of their corresponding outputs.</div><div><br /></div><div>The function $f(x)$ is called an <i>affine</i> function if there exist $a_0,a_1,โฆ,a_n \in {\mathbb F}_2^n$ such that $f(x)=a_0\oplus a_1 x_1\oplus โฆ\oplus a_n x_n$, where $\oplus$ means modulo $2$ addition. Particularly, if $a_0 = 0$, it is called a <i>linear</i> function. If the set of all Boolean functions in $n$ variables is denoted by $B_n$, the set of linear ones by $L_n$, and $A_n$ is the set of affine ones, then we say that $L_n\subset A_n \subset B_n$.</div></div><div><br /></div><div>That's all for the time being, thanks for reading again!</div>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-49855388845075659882021-04-25T01:25:00.011+01:002021-07-01T16:39:36.078+01:00Exploring What a PhD Is Like<p></p><p class="MsoNormal"><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Some
weeks ago, it was my pleasure, and honour, to be invited to participate as a
panellist in the online event <i>Explore What a PhD is Like</i> organised by </span><a href="https://www.lboro-phd-network.org.uk/ssndiary-explore-what-a-phd-is-like-with-lsu-peer-support/"><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">PhD Social Support Network</span></a><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"> from </span><a href="https://www.lboro.ac.uk/services/doctoral-college/training-events/phd-support/"><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Loughborough
University</span></a><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">. The event
aimed to give undergraduate and postgraduate students a summary of Doctoral
Researchersโ lives and an idea of what itโs like to do a PhD at Loughborough
University. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">With so
much confusing and contradictory information out there, it becomes a bit difficult
to have a good understanding of many things before embarking on doing a PhD. So
I decided to write down my answers for those of you who could not attend the
event and are interested in doing a PhD. Because we were four panellists, I
just answered some questions, but in this post, I share my answers to all
questions, which mainly depend on my personal circumstances and experiences at
Loughborough University โ And I do hope to help clear some things up. In case that you have any other questions, please let
me know in the comment section.<span></span></span></p><a name='more'></a><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><o:p></o:p></span><p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-size: x-large;">Funding</span><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Do you
always get paid when doing a PhD? <o:p></o:p></span></b></p>
<p class="MsoNormal">Not always, but you can get paid by external institutions or
companies interested in your project, although it can sometimes be a bit
difficult, many researchers do their PhD this way. Moreover, there are some projects
โ fully funded by universities โ that are just waiting for the prospective
student to apply for. <span style="mso-spacerun: yes;"> </span>You can have a
look at Loughborough universityโs website to see if one of them is of your
interest; here some links that may be useful.<o:p></o:p></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.lboro.ac.uk/study/postgraduate/research-degrees/phd-opportunities/">PhD
opportunities | Postgraduate study | Loughborough University (lboro.ac.uk)</a><o:p></o:p></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.lboro.ac.uk/study/postgraduate/phd-studentships/">PhD
Studentships | Postgraduate study | Loughborough University (lboro.ac.uk)</a><o:p></o:p></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.britishcouncil.in/study-uk/scholarships">Scholarships |
British Council</a><span class="MsoHyperlink"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><o:p> </o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">What are
the different funding options for a PhD?<o:p></o:p></span></b></p>
<p class="MsoNormal">As far as I know, there are two options:</p><p class="MsoNormal"></p><ul style="text-align: left;"><li>To be sponsored by a company interested in the
project, by your Government, or by other external institutions.</li><li>Self-funding. Also, you can get a scholarship
and pay less. Indeed, itโs a good option, but keep in mind that you might have to pay other
expenses such as accommodation, flight tickets, etc.</li></ul><p></p><!--[if !supportLists]--><o:p></o:p><p></p>
<p class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo1; text-indent: -18pt;"><o:p></o:p></p>
<p class="MsoNormal">With the withdrawal
of the UK from the European Union, some new rules are put into place that could
create more opportunities for students, especially for international students.<span face=""Arial",sans-serif" style="background: white; color: #4d5156; font-size: 10.5pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">How does it
work in terms of visa for international students? <o:p></o:p></span></b></p>
<p class="MsoNormal">In the first place, I suggest that you must only apply for a student visa after getting the CAS document from the university, which is the Confirmation of
Acceptance for Studies. I think it's the main document for the process of getting the visa โ Without it, your UK visa application may take longer or fail. <o:p></o:p></p><p class="MsoNormal">Note that international students have to meet minimum English language requirements (either IELTS or Cambridge CAE); it's a mandatory requirement if you are a non-native English speaker. Some schools may require higher levels of English language. For further information, you can check out this: <a href="https://www.lboro.ac.uk/international/apply/english-language-requirements/">English language requirements | International | Loughborough University (lboro.ac.uk)</a></p><p class="MsoNormal">Also, be aware of your English certificate expiration date; IELTS certificates are valid for two years only, so once you pass your exam you'd better apply for your PhD before your certificate expires; otherwise, you might need to take the EILTS exam again. </p><p class="MsoNormal">One important thing to consider is that if you have an English taught degree such as undergraduate or master's in English speaking country then you are waived to do IELTS.</p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-size: x-large;">Supervisors/Support</span><o:p></o:p></span></b></p>
<p class="MsoNormal"><b>What is the
role of a supervisor?</b></p>
<p class="MsoNormal">It is basically to supervise the project with respect to long-term
goals and to guide you through your whole PhD journey. Although you are expected to be at the forefront of your research, your supervisor plays
a vital role in the success of your PhD; so having a committed supervisor could
make a huge difference. Bear in mind that PhD researchers are not like normal
students any more; we are meant to be proactive; itโs our research and we
have to take care of it. Having the right supervisor will make you in a better
position to have successful research. <o:p></o:p></p>
<p class="MsoNormal">I think most supervisors are happy when you bombard them
with questions, which mean you show interest in your research; however, we have
to make concise questions. And read more than you asked to do so.<o:p></o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">How often
do you meet with your supervisory team? <o:p></o:p></span></b></p>
<p class="MsoNormal">During some time, you could start meeting once a week, and then once a month, or twice a month, it is always changing. In my case, we meet mostly once a week for now, but it could vary depending
on your project and your supervisorโs availability. I would not worry too much
about it because I am almost sure that you will meet your supervisor as much as
it is needed. Your supervisor will tell you what is best, but you are also free
to ask your supervisor to meet more frequently if you could not understand some
things or just need to ask something important.<span style="mso-spacerun: yes;"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">How do you
manage your supervisor?<o:p></o:p></span></b></p>
<p class="MsoNormal">We work as a team. If you have some additional questions then
you are free to ask your supervisor via email for extra meetings. Also, it is
absolutely vital to cultivate a good relationship with your supervisor, not
only for the sake of your research but also for your mental health. So I am
convinced that having good communication with our supervisor will make our PhD
journey much more enjoyable.<o:p></o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">What
support is there for your mental health?<o:p></o:p></span></b></p>
<p class="MsoNormal">I'm aware that doing PhD research could sometimes become quite
disquieting even at the best of times, and the situation can be bloody hectic;
so if, at some point, you feel your life is out of control or you are lost then
try to meditate and seek help for mental health in university and friends.
Loughborough University also offers student mental health support in different
ways, here are some useful links you can check out.<o:p></o:p></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.lboro.ac.uk/services/cds/wellbeing/mental-health/">Mental
Health Support Team | Student Wellbeing and Inclusivity | Loughborough
University (lboro.ac.uk)</a><span class="MsoHyperlink"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.lboro.ac.uk/study/postgraduate/locations/loughborough/">Loughborough
| Postgraduate study | Loughborough University (lboro.ac.uk)</a><o:p></o:p></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><a href="https://www.lboro.ac.uk/study/postgraduate/locations/loughborough/lsu/">Loughborough
Students' Union | Postgraduate study | Loughborough University (lboro.ac.uk)</a></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;"><br /></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-top: 0cm; mso-add-space: auto; mso-margin-bottom-alt: 8.0pt; mso-margin-top-alt: 0cm;">I also recommend that you get involved in social activities which
will help you break out of stressful situations. Try to meditate and feel at peace, whatever happens, take care of your
daily mental activity. For health reasons, donโt make your PhD study the
center of your life; donโt let your PhD study drive you bloody mad. Life
is much more than doing a PhD.</p><p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size: x-large;">The PhD
project itself</span></b></p><p class="MsoNormal"><b>Do you have
to do a PhD in the same field as your undergraduate or masterโs degree?</b></p>
<p class="MsoNormal">No. You can change it. But itโs highly recommendable that
one can continue studies based on previous work. For example, I did a masterโs
dissertation in cryptography (Computer Science), and then I decided to do my
PhD research in cryptography, which is basically a continuation of my dissertationโs
topic. And the supervisor is also the same. So, I saved a lot of time because I did not have to start from scratch.<o:p></o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Can you do
a PhD part-time?<o:p></o:p></span></b></p>
<p class="MsoNormal">Yes, you can. But it will take twice the time. In the UK, it
takes 3 years to do a full-time PhD and 6 years a part-time PhD. You can read
more about it here <a href="https://www.lboro.ac.uk/study/postgraduate/research-degrees/types-research-degrees/">Types
of research degrees | Postgraduate study | Loughborough University
(lboro.ac.uk)</a><o:p></o:p></p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">What does a
typical day at work look like for you? <o:p></o:p></span></b></p>
<p class="MsoNormal">As said before, I donโt make my PhD research the center of my life; improving my lifestyle every day is of greater importance, and my PhD research is just a little important part of my whole life. In this sense, I am
conscious that if I get my priorities right in terms of mental and physical
health, the rest is of secondary importance. Having said that, a typical day at
work is based on these criteria; I usually kick off the day by working out,
eating healthy food, and then work first on things that may be more difficult,
then I spend some time on complementary things. As <span style="mso-spacerun: yes;">simple as that. </span><o:p></o:p></p>
<p class="MsoNormal">As with most things in life, there will be some ups and downs,
it's just normal. Just keep going, doing a PhD is a long journey, enjoying the
journey and having fun in the process are the secrets to succeed in accomplishing your research's goals; it is all that matters. Some days you just
work a lot, other days you do not feel like studying, donโt panic, carry on
with your life, do other things, get involved in other activities; for example,
try to practise some sports or meditation to unwind and then move on with
your research. Donโt beat yourself up for having some weekends off instead of
studying. <o:p></o:p></p><p class="MsoNormal">To me, doing a PhD is just that, one reason to spark my imagination and go beyond my limits; it contributes to my happiness; it is meant to set me free. It does not demand perfection, but my attitude is all that matters to determine what I'm capable of achieving; like everything else, it requires a lot of flexibility and to adapt quickly to different situations. It does not feel like work; it is just a lot of fun; it a feast for the senses. </p>
<p class="MsoNormal"><b><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">What are
your best tips on work/life balance? <o:p></o:p></span></b></p>
<p class="MsoNormal">Once again, you are not compelled to study every day, there
are some days you just donโt want to do anything, thatโs all right, donโt
feel guilty. As we do our research, we may start feeling like we are living a monotonous life; every day may be predictable; the same routine; it can even get to the point where we don't have any motivation left to do anything important with our lives; so hard that it may take all the fun out of learning; everything may seem like an uphill battle. All these things happen when we don't balance our PhD journey with other important activities. </p><p class="MsoNormal">So I suggest that you donโt make your PhD study the center of your life, your whole
world is much more than a PhD. Donโt stop your life because of a PhD; your PhD
study must just be another reason to be a bit happier, but not the main reason.</p><p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">What also matters, is what you do with the rest of your time when
you are not studying, because this will help you balance a full-time PhD with
other important activities to create an engine of continuous growth and progress
in many directions; which in turn will make you feel more satisfied with your
life. Otherwise, you might get an overall sense of dissatisfaction at the end
of the day, which is damaging in the long run.<o:p></o:p></p>
<p class="MsoNormal">Although I do love my research, I know it could become
hell because of tiredness. We could even regret doing a PhD because we just
got so tired and overwhelmed โ it can get to the point where we just want to quit โ Thatโs why at some point during each day, I stop
and then I carry on with other activities before going back with new ideas to
my PhD research. This is how I keep a well-balanced life, which gives me a great
sense of achievement and helps me stay committed. <o:p></o:p></p>
<p class="MsoNormal">Perhaps my best tips to get a well-balanced life are:<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><o:p></o:p></span></p><p class="MsoNormal"></p><ul style="text-align: left;"><li>Kick-off your day by working out, at least, 30 minutes every day or every other day. It will get you prepared for the whole day, you will be energetic and a bit happier. Believe me, not only will it keep you going, but also it will make your daily train of thoughts more positive. </li><li>Try to eat healthy food. Drink enough water. What you eat boosts your performance.</li><li>Do some meditation, at least every other day. Remember, as within so without. It will rid you of negative vibes.</li><li>Then, organise your day. First, work on your research, start doing the most difficult things. Try to savour it, be happy while researching.</li><li>Donโt lose focus. If you get tired then carry on with other social activities, or just go for a walk, take a rest. You are at the wheel.</li><li>Sleep well. At least, 8 hours. Turn off all electronic devices โ And go within.</li></ul><p></p><p class="MsoNormal"><b>What are the best and worst things about your PhD?</b></p>
<p class="MsoNormal"><b>BEST</b><o:p></o:p></p><p class="MsoNormal"></p><ul style="text-align: left;"><li>It allows me to explore unknown worlds, it broadens my horizons.</li><li>It sparks my imagination.</li><li>It gives me the golden opportunity to re-imagine my world.</li><li>It gives me new career opportunities.</li><li>It allows me to challenge myself every day. Keep in mind that if it does not challenge you, it won't change you. So, I chose to do a PhD in a topic that not only does it challenge me, but also I do love it.</li></ul><div><b>WORST</b></div><div><ul style="text-align: left;"><li>Having to live so far away from my family</li><li>The cost of living in the UK is high. Tuitionsโ fees are also high, especially for international students. </li></ul></div>
<p class="MsoNormal"><b>What has your biggest achievement been so far? <o:p></o:p></b></p>
<p class="MsoNormal">Being a bit happier because I am doing my PhD for fun.<o:p></o:p></p>
<p class="MsoNormal"><b>Can you do a placement during your PhD?<o:p></o:p></b></p>
<p class="MsoNormal">Yes, I think it is possible, but unfortunately, I donโt have much
information about it.<o:p></o:p></p>
<p class="MsoNormal"><b>Can you work alongside your PhD?<o:p></o:p></b></p>
<p class="MsoNormal">Yes, you can. Your student visa allows you to work 20 hours
a week, but if you want to work more hours then you need to get UK work
visa. It is easier if a company sponsors you โ especially if you are an international student.<o:p></o:p></p>
<p class="MsoNormal"><b>Have you done any teaching during your PhD?<o:p></o:p></b></p>
<p class="MsoNormal">No. I am quite interested in doing so in the future, but not
for now.<o:p></o:p></p>
<p class="MsoNormal"><b>Did you get involved in any societies or clubs during
your PhD?<o:p></o:p></b></p>
<p class="MsoNormal">Yes, itโs a lot of fun, it gives you a great sense of
togetherness. I encourage you to do so. <span style="mso-spacerun: yes;"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size: x-large;"><b>PhD
Progression</b></span></p>
<p class="MsoNormal"><b>What are your best tips on writing the thesis? How do you
approach the writerโs block?<o:p></o:p></b></p>
<p class="MsoNormal">In particular, I just write when I feel inspired. When I
start writing, I make my first draft, almost immediately, I do the first proofreading.
Then I leave it for one or two days before coming back to fix or add some ideas;
sometimes I may consider removing whole paragraphs and re-writing some parts
and adding other ideas. Even best writers do that, they donโt expect to make
their first draft the final version; writing is an art; it takes time to master it. So I could have four or
five drafts before making up the final version; that's why I work hard to finish my reports some weeks before the deadline so that I can have enough time to polish them. <o:p></o:p></p>
<p class="MsoNormal">Some tips may be:<o:p></o:p></p><p class="MsoNormal"></p><ul style="text-align: left;"><li>Focus on learning good English grammar to improve your writing skills including punctuation and what to avoid when writing (avoid slangs, idioms, etc).</li><li>Learn how to write clearly and concisely.</li><li>Having a good writing style will make a significant difference. Your thesis will look more professional and academic.</li><li>Write when you are inspired. Best ideas just come up when we are inspired; feel the passion when you write.</li><li>Find your best time and place to write.</li><li>Depending on your research you may consider writing a bit every week as not to miss minute details; however, your research could change over time and morph into a very different project from what you started.ยท</li></ul><p></p>
<p class="MsoNormal"><b>Is there a minimum number of published papers required to
pass? <o:p></o:p></b></p>
<p class="MsoNormal">No. It is not compulsory to have papers published to pass.
You just have to write your thesis. However, you could end up writing one or
two papers; you may work on that voluntarily; you donโt have to feel compelled
to do it, but I see that most PhD researchers are more than happy to write
papers while doing their research. So, I would wholeheartedly recommend that
you write papers. After all, if you stayed in academia then writing papers
would be the new normal; in this sense, it is a golden opportunity to get
started already. It entirely depends on you.<o:p></o:p></p>
<p class="MsoNormal"><b>Do you have to stay in academia after a PhD? <o:p></o:p></b></p>
<p class="MsoNormal">No. You can get a job in the industry, but once you have
done your PhD you might change your mind; I would not worry much about it; you
will figure it out while doing your PhD. Some people just do a PhD to get
involved in academia because they got tired of working in the industry and want
to change their career, while others do the opposite. Alternatively, you can also
write books, go independent, create your company. There are many options out
there. Also, some people do a PhD just for fun and they donโt want to stay in
academia nor get a job in the industry, so they start travelling the world, get
married, have children. It all depends on why you choose to do a PhD โ Itโs all
up to you.<o:p></o:p></p>
<p class="MsoNormal">Thatโs all for now. Thank you so much again for reading this
post!</p><p></p>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-74686318199191405752021-03-12T00:38:00.115+00:002021-04-26T16:59:38.302+01:00Cryptography is EverywhereHistorically, cryptography was used for secret communication by exclusive sectors only โ such as governments, military and spies โ since it was crucial and affordable to them. They have long been aware of the consequences of their messages falling into the wrong hands; therefore, this situation has motivated the development of techniques for disguising a message so that only the intended recipient can read it. <div><blockquote>The huge desire for secrecy led nations, kings, and queens to make all-out efforts to ensure the security of communications by inventing the best possible secret codes and ciphers. <span></span><span></span></blockquote></div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4XDOJRxE2znurqhmc5XEYryEUBeGKWvG3mgNW3PqIiBPUepTTGFrsm4XkTIJXtRZBcXbg4SWsd4xgI6C3WszYFxslNvIGWQHOlQZ4etvJ_MuTwcVV6E3AFTGKD-rQk3wLE-R8cTvxNQ8n/s1034/victorianlovers.jpg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto; text-align: left;"><img border="0" data-original-height="1034" data-original-width="728" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4XDOJRxE2znurqhmc5XEYryEUBeGKWvG3mgNW3PqIiBPUepTTGFrsm4XkTIJXtRZBcXbg4SWsd4xgI6C3WszYFxslNvIGWQHOlQZ4etvJ_MuTwcVV6E3AFTGKD-rQk3wLE-R8cTvxNQ8n/w225-h320/victorianlovers.jpg" style="float: right; padding: 10px;" title="A lover in Victorian times. (Image Source: ISTOCK)" width="225" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A lover in Victorian times<br /></td></tr></tbody></table>As the public also became aware of the need to protect personal messages of a highly sensitive nature, they also became comfortable with encipherment. They began to express their cryptographic skills in a variety of ways โ for example, <a href="https://www.theguardian.com/uk/2008/feb/14/7" target="_blank">young lovers in Victorian England</a> were often forbidden from publicly expressing their affection, and could not even communicate by letter in case their parents intercepted and read the contents. This resulted in lovers sending encrypted messages to each other via the personal columns of newspapers, more specifically, via the classified ads. <span><a name='more'></a></span><div><div><br /></div><div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></div>But what exactly is cryptography? Simply put, it is the study of how to send secret messages by codes and ciphers, in other words, cryptography is the art and science of keeping messages secure. Perhaps the most famous encryption machine is the Enigma which was developed by Nazi Germany to protect commercial and military communication during World War II and then cracked by Alan Turing โ it is difficult to avoid getting excited when talking about the Enigma machine, isn't it? During that time, he worked for the Government Code and Cypher School (GC&CS) at Bletchley Park, Britain's codebreaking centre. He played a decisive role in cracking intercepted coded messages which enabled the Allies to defeat the Nazis and shorten the war by as many as two to four years. This certainly saved millions of lives as well. <br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBLd05MQTg6lwQysDwe7M-7AiVR40GBv8ZWMx-c90daoh1pb696nOj_auez9O4sG1wwgocs6liZFpmZxjIK0TRHDinBal0skfHB6Qajv3GijBE6FrzKrULWBS_abRA4JUtB5-Eklby9Jj_/s2048/enigma.jpg" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1366" data-original-width="2048" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBLd05MQTg6lwQysDwe7M-7AiVR40GBv8ZWMx-c90daoh1pb696nOj_auez9O4sG1wwgocs6liZFpmZxjIK0TRHDinBal0skfHB6Qajv3GijBE6FrzKrULWBS_abRA4JUtB5-Eklby9Jj_/w200-h133/enigma.jpg" title="The Enigma Machine. (Image Source: ISTOCK)" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The Enigma Machine</td></tr></tbody></table></div><div><br /><div>With the arrival of major advancements in science and technology, this field has played an extremely important role beyond militaryโs security becoming financially and technologically accessible and increasingly essential for ordinary people and companies. </div><div><blockquote>Nowadays, cryptography is not only about secret communication but also data security โ including confidentiality, integrity, authentication and non-repudiation. </blockquote></div><div>It is commonly used for e-commerce especially electronic transactions in the banking system, cash withdrawal from an ATM, instant messaging, file storage, email, web browsing, GSM mobile phone, cryptocurrency, etc. We are using cryptography more than ever before.</div><div><br /></div><div>Notwithstanding the beneficial impact on society, cryptography has also raised some concerns related to human rights, ethical, and legal issues because it can certainly be used for bad purposes as well โ such as organising terrorist attacks and abusing people. In this sense, companies have a duty to protect data based on contract, laws, and industry regulations related to Copyright and Digital Rights Management. Also, some governments have the right to request key disclosure either from the accused or from third parties, but it also compromises people's privacy.</div><div><blockquote>Having the forces of law and order lobbying to restrict the use of cryptography gives rise to the heated controversy over which one has more value for us: our privacy or an effective police force? This controversial issue certainly conflicts with both sides' interests. </blockquote></div><div>Not surprisingly, issues like this are being addressed by the global movement Amnesty International which says Encryption is a matter of Human Rights, which basically means that people everywhere should be able to encrypt their communications and private personal data for the sake of their rights to privacy and free speech.</div><div><div><br /></div><div>Code-breaking attacks have also been improved considerably resulting in cryptographers working on new ways to make stronger cryptography which thrives only until its weakness is identified by codebreakers. So, secret codes and ciphers are constantly under attack from codebreakers which continually force them to evolve to survive the onslaught of new attacks. This ongoing battle has resulted in remarkable scientific breakthroughs and accelerating technological developments. Also, this situation has mostly looked like a quest for absolute secrecy โ which is not possible for now at a reasonable cost. </div><div><blockquote>Cryptography is everywhere, and you might have not noticed yet; it is because cryptography is mostly working in silence โ in the background โ it is invisible; it is always working in the dark to help secure our communication and data. It is always there to protect us.</blockquote></div><div>I must mention that cryptography is a central topic within theoretical computer science, which covers a broad range of key-related topics having maths as the game-changer. It is strongly linked to mathematics, algorithms, etc. <a href="https://www.percyreyes.com/2021/03/do-you-want-to-be-cryptographer_4.html" target="_blank">Good cryptography needs good mathematics</a>, and it is practised by <a href="https://www.percyreyes.com/2021/03/do-you-want-to-be-cryptographer.html" target="_blank">cryptographers who are trained in theoretical mathematics</a>.</div><div><br /></div><div>Cryptography is just wonderful โ Welcome to the freewheeling world of cryptography... </div></div></div></div></div>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com7tag:blogger.com,1999:blog-7439371001490945169.post-24252990448108745592021-03-05T06:17:00.012+00:002022-04-17T14:43:24.268+01:00Do You Want to Be a Cryptographer?<div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><img alt="Alan Turing" border="0" data-original-height="769" data-original-width="640" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjN-q10ZTVzIJq4K6drn2swcN7x42Hl_oItJ5xSta1x00GdD8CDgXSh6UhETgG5cY38YGMlG4V5IkJrHuQ-IzWtu7WQ_W7yE3EWrD2dU7DLWg1X2pErXrajyMXO0RKmpqPSS12axWI9be/w166-h200/alan_turing_and_binary_code_image_640.jpg" style="margin-left: auto; margin-right: auto;" title="Alan Turing" width="166" /></td></tr><tr><td class="tr-caption" style="text-align: center;">Alan Turing</td></tr></tbody></table>I've always been interested in information security since 2003, but it wasn't until I enrolled on the cryptography module โ while studying for a Master in Advanced Computer Science in England in 2018โ that I started getting more keen on the mathematical side of cryptography; perhaps it was in part because I cherish mathematics and had the right cryptography teacher. What's more, I admire Alan Turing since he strove to do good work in difficult conditions during World War II; his work saved millions of lives. All of these things together inspired me to immerse myself in the world of cryptography. </div><span><a name='more'></a></span><div><br /></div><div>Not so long ago, I started considering doing a PhD in cryptography, but I had also heard about security engineering and then I got a bit confused. Generally speaking, there are two different specialities, which may be mistakenly perceived: cryptography and engineering security, but you might have also heard about 'applied cryptography' and 'pure cryptography'. For cryptographers, cryptography is primarily pure cryptography โ working on the mathematical side โ whereas 'applied cryptography' is more related to security engineering. So, I also mean 'pure cryptography' when I mention 'cryptography'. </div><div><br /></div><div>Although I had done my master's dissertation on cryptography, I still had some doubts. What to study then? I wondered. In most cases, after starting a PhD in cryptography, people convince themselves that they don't relish cryptography but security engineering. In this sense, I had to make a wise decision. </div><div><br /></div><div><div><div>Searching on the internet, I found an inspiring essay, by <a href="https://www.schneier.com/" target="_blank">Bruce Schneier</a>, that helped me to clear things up. The essay must be read thoroughly before entering the cryptography world or embarking on the journey of doing a PhD. You will understand all the differences between related fields and other aspects involved in this amazing and challenging area of theoretical computer science. </div><div><br /></div><div><div>Obviously, there are other things to be taken into consideration when doing a PhD such as career opportunities, funding, supervisor, time, etc. I will not expand on that now, though. Also, I have to confess that it wasn't an easy decision to make; it took me some time to figure out many other things. However, that essay also helped me decide to do a PhD in cryptography.</div><div><br /></div><div>I would highlight the main difference is that learning cryptography means the study of mathematics in-depth or having a very good understanding of the underlying mathematical ideas at least, whereas this is not required if you go for security engineering. Mathematics is the framework that you create new cryptography on; good cryptography needs good mathematics, as simple as that. If you don't relish maths then you'd better go for security engineering.</div></div><div><br /></div><div>Talking of the essay, 'Cryptographers create new cryptography and invent new cryptographic algorithms,' Bruce says, 'whereas security engineers are implementers of cryptography.' Also, he adds, 'Getting a PhD in cryptography is by far the easiest way to become a cryptographer' โ Yes, I do agree. I'd also say that it is probably the most straightforward way of acquiring strong cryptography skills. Also, he says, 'While doing a PhD you will convince yourself if you really want to become a cryptographer.' Yes, but I think you may waste some time โ which might be regrettable. Finally, he remarks, 'You must have training in mathematics and computer science; if you have a good mathematics background is advantageous.' โ and I'd remark it is vital to cryptography. </div><div><br /></div><div>Now, here is a summary of Schneier's essay. I have firsthand experience of the following facts and ideas, I second all of them. If you still want to read the whole essay this is the link: <a href="http://www.windowsecurity.com/uplarticle/4/cryptwant.txt" target="_blank">http://www.windowsecurity.com/uplarticle/4/cryptwant.txt</a></div><blockquote style="text-align: left;"></blockquote><ul style="text-align: left;"><li><span style="font-family: Zilla Slab;">A cryptographer is someone, who is active in the field of cryptography: someone who engages in research, writes papers, breaks algorithms and protocols, and sometimes writes his own algorithms and protocols. </span></li><li><span style="font-family: Zilla Slab;">Most people who implement cryptography in software and hardware products are not cryptographers. They are implementers of cryptography, security engineers. I find that most people who say they want to be cryptographers actually want to be security engineers. They want to be a person who builds secure systems that use cryptography. Security engineering requires a strong understanding of cryptography, but it does not require creating new cryptography.</span></li><li><span style="font-family: Zilla Slab;">Both mathematical and computer science training is vital. The ability to find loopholes in a system, be they mathematical, systematical, or procedural, is vital to a cryptographer.</span></li><li><span style="font-family: Zilla Slab;">Almost certainly you will get the urge to invent new cryptographic algorithms and will believe that they are unbreakable. Almost certainly your creations will be breakable, and almost certainly no one will spend the time breaking them for you. You can break them yourself as you get better.</span></li><li><span style="font-family: Zilla Slab;">Cryptography uses number theory, but cryptography uses ideas from many varied areas of mathematics. In fact, one of the most interesting aspects of cryptography is that great ideas come from all over mathematics. Cryptographers need a broad knowledge of mathematics; this is the only way that new connections are made and really original ideas are found.</span></li><li><span style="font-family: Zilla Slab;">Vital computer science courses include algorithm design, computational complexity, and theory of computation. Keep reading books on cryptography: The Handbook of Applied Cryptography by Alfred J. Menezes, Paul C. van Oorschot, and Scott A. Vanstone, or Doug Stinson's Cryptography: Theory and Practice. Read books about computer security.</span></li><li><span style="font-family: Zilla Slab;">If you have a good mathematics background, you can teach yourself cryptography. This option is much harder, but it is possible.</span></li><li><span style="font-family: Zilla Slab;">Learning to be a cryptographer is not easy, and it makes sense to question whether that is what you really want to do. Luckily, the process has many points where you can decide to change your mind. And as I said in the beginning, many people who say they want to be cryptographers actually want to be security engineers. While the requirements for a security engineer are much the same โ read books, read research papers, take classes, learn cryptography and how it's used โ a PhD is not required.</span></li></ul><div style="text-align: left;"><div><div>Note that โ for some prospective students โ cryptography may be seen as an unconventional research field, but I don't consider it as such nor as an abstract investment. On one way or the other, I also understand they might want to go for something 'more practical'. As with most things in life, it's all about following your passion. Other students might say cryptography is too hard, which means to me they don't like it or they have had a not-so-good cryptography teacher, that's it. To me, doing a PhD in cryptography sparks my imagination beyond limits; it is not meant to restrict me; on the contrary, it is meant to set me free. So, cryptography might not be for everyone, you've got to be very conscious of it. </div></div><div><br /></div></div><div style="text-align: left;">I hope this post helps you make a wise decision if you are thinking of doing a PhD in cryptography or starting a career in cryptography. Now the question is, do you still want to be a cryptographer?</div></div><div style="text-align: left;"><br /></div><div style="text-align: left;">(Image source: <a href="https://www.history.org.uk/student/resource/8399/podcast-the-life-and-significance-of-alan-turing" target="_blank">www.history.org.uk</a>)</div></div>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-79324939360049711112021-03-04T23:38:00.063+00:002022-02-27T16:00:36.924+00:00Don't Place the Blame on SQL ServerI have never worked for Microsoft, but SQL Server has given me a lot in terms of learning, community and opportunities, all these together have helped me do a great job as a Database Administrator (DBA) for many years. Since I started working with SQL Server nearly 15 years ago, I have heard a lot of complaints about SQL Server being nowhere near as good as Oracle. Much as I would have liked to ignore these fruitless discussions, I couldn't see the point of comparing products in such a compulsive way. Is it not true that our skills are more crucial than the technology itself? โ Or perhaps some people just try to find something to blame. Whatever the case, I am convinced that we, as database professionals, are compelled to make the most out of any specific database technology. <div><blockquote>No matter what technology we are working with, we are at the wheel โ technology is just a tool โ so it is not the best to blame technology on the ground of one's inefficiency.<span><a name='more'></a></span></blockquote></div><div>I disagree with some database engineers who speak glowingly of SQL Server because I am cognisant that, after all, this is just one of the many hugely powerful tools available out there to manage databases. Indeed, every solution depends entirely on my expertise and experience; so technology is not in dispute, what I question is some people's attitude โ and sometimes โ the sneering tone of this.</div><div><br /></div><div>So many issues arise just because of the misuse of technology โ and sloppy SQL Server installations โ for example, I have observed how some accidental DBAs strove to make Log Shipping function as a real HA/DR solution. Others asked me how to install SQL2000 on Windows Server 2016 โ I just couldn't believe my ears! I still cannot see how it would work properly. For God's sake, If only people just made appropriate use of features, they would not come across so many unforeseen issues; at times it looks much as if they enjoyed making up issues on purpose; are you kidding me? No way!</div><div><div><blockquote>People are to blame; technology is just a tool; use it wisely.</blockquote></div><div>Talking from experience, I have to remark that Microsoft SQL Server is cleverly designed and has an easy-to-use interface that relieves you from having to know arcane syntax details to complete many jobs. So, if other database management products lack those features then it is not a Microsoft SQL Server's problem. The top priority of any software is to make our life easier and our work more productive โ In this sense, SQL Server just makes that; is it not wonderful? Of course, it is!</div><div><br /></div><div>Microsoft SQL Server provides scalable performance mostly when there is only one instance running per server, only then will it make efficient use of resources and eliminate the overhead of having various SQL instances struggling with shared memory and limited storage throughput, so the question is, Why do some people insist on having various instances per server? I can't understand it yet. Similarly, it is highly recommendable to carry out database maintenance tasks once a month at least to warrant strongly consistent data and to eke out every last ounce of performance; so why do people neglect it? And also bitterly complain when performance issues arise because of stale statistics or fragmented indexes? Even though they request for the SQL Server minimum hardware requirements, they by far fall short of requirements resulting in unforeseen problems arising again and again, and โ even worse โ this part is often neglected too. </div><div><br /></div><div>Moreover, I have witnessed how SQL Server technology has improved dramatically since 2005. I have to admit that SQL Server 2000 was nowhere near as good; nobody can deny this fact; however, it didn't perform as poorly as previous versions such as SQL7.0 and SQL6.5. Although SQL2000, SQL7.0 and SQL6.5 were unscalable products, one as a DBA had to make wise use of them to handle poor performance issues with grace. If the DBA knows the database management system inside out then the DBA will not only harness the power of its strengths but also know how to deal with its limits; the DBA will use all the features appropriately โ and not in the opposite way. Thus I'm convinced again it's all up to our expertise.</div><div><div><br /></div><div>
All in all, as you might have realised, the major problem is mostly about people โ who poorly design and install database servers โ many of them lack the knowledge and experience; so the root cause is people but the technology on its own. Again, it's unfair to place the blame on SQL Server on the grounds of one's inefficiency. But for people's misuse of technology, it would work perfectly.</div><div><blockquote>The more you know SQL Server inside out, the better the performance will be. SQL Server just offers as good performance as you know it inside out. </blockquote></div><div>Thus, in the event that you are still unsatisfied with the product, remember what I mentioned before; you might be barking up the wrong tree. I hope this post helps clear some things up, and if you have some questions so please do let me know. <br /></div></div></div>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com1tag:blogger.com,1999:blog-7439371001490945169.post-69728112198335956332018-07-30T12:30:00.000+01:002021-04-12T07:15:35.749+01:00Installing a stand-alone SQL Server 2017 instance step by stepUndoubtedly, many of us have the task of installing a new stand-alone SQL Server instance which includes the database engine service only. For instance, it can primarily be needed for dedicated and consolidated OLTP environments. Consequently, we can be asked to create a formal document for others so that they can easily follow it for future installations and standard configurations.<br />
<br />
Today's post is going to outline the process of installing a basic stand-alone SQL Server 2017 instance. This process is just a basic guideline and, surely, not a rule for each installation, because it is fully understood that every environment is different and needs a customised installation to meet very specific requirements. You can read the whole tip about it at mssqltips here <a href="https://www.mssqltips.com/sqlservertip/5616/steps-to-install-a-standalone-sql-server-2017-instance">https://www.mssqltips.com/sqlservertip/5616/steps-to-install-a-standalone-sql-server-2017-instance</a>. I hope you find it very useful and practical. That's all for now. Please let me know any remarks you may have. Stay tuned!Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-54556704462006143372018-03-20T14:55:00.001+00:002021-04-13T04:58:59.552+01:00Configuring Read-Only Routing and load-balancing across Read-Only replicasWith the arrival of AlwaysOn Availability Group in SQL Server 2012, implementing HA+DR solutions have been an easier and not expensive task in comparison to legacy architectures such as Database Mirroring for HA and Log Shipping for DR, and FCI for HA and Database Mirroring for DR. Nevertheless, at the beginning not everyone has been fully aware of all the power of this technology so that some might not have made the most out of it. Naturally, this technology has been improved over the years, for instance, load-balancing across readable secondary replicas was added, and today in this post, I am coming with a script to configure it.<span><a name='more'></a></span><br />
<br />
To begin with, bear in mind that client connectivity to availability group databases is established through its Listener which is a Client Access Point Clustered Resource. This Listener consists of a DNS name, one or more IP address and a Port, and it makes possible that standard connections are routed to the primary replica for Read-Write operations, whereas Read-Only connections are routed to the secondary replicas (via the Read-Only Routing list). More specifically, working with a Listener has the following advantages: it connects to the primary replica (Read-Write), routes Read-Only intent connections to secondary replicas (Read-Only), and acts as a multiple subnet Listener for stretch cluster, multi-site, remote site. However, the client connection behaviour is determined by Availability Group Replica options. These options determine whether a replica is enabled for Read-Only access when in a secondary role and which clients can connect to it, for instance, we can configure secondary replicas to accept no connections at all, only Read-Only connections, or all connections. <br />
<br />
Talking a bit more about Read-Only Routing list used by the AG Listener, Read-Only connections are routed to a readable secondary based on Read-Only Routing list which enables automatic direction of client connection to new readable secondary, and even more, it is possible for connections to go to different readable secondaries if available to balance Read-Only access (since SQL2016). In the following example, we have an Availability Group MSSQLAG1with four replicas: NODE1, NODE2, NODE3, NODE4 (inside the DBA300 domain). So, to allow applications to be routed to readable secondary replicas we must configure the Read-Only Routing list. Firtly, starting with the configuration of the Read-Only Routing URL for each replica, in other words, set the URL for each replica. This setting is only used when the local replica is acting as secondary. <br />
<br />
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">SECONDARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_URL</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'TCP://NODE1.DBA300.COM:1433'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">SECONDARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_URL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'TCP://NODE2.DBA300.COM:1433'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">SECONDARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_URL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'TCP://NODE3.DBA300.COM:1433'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="margin: 0px 0px 10.66px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">SECONDARY_ROLE
</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">READ_ONLY_ROUTING_URL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">=</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'TCP://NODE4.DBA300.COM:1433'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">))</span></div>
Now we must include each replica in the Read-Only Routing List. This setting for each replica is used when the replica is acting as primary. In this case, Read-Only Routing list will always direct traffic to the first available replica in the routing list. For instance, taking the first part of the code, we are saying that when NODE1 is a primary replica then all Read-Only intent connections must be directed to NODE2, but if NODE2 is not available then redirect them to NODE3, otherwise to NODE4.<br />
<br />
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span><br />
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=(</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=(</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=(</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="margin: 0px 0px 10.66px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">PRIMARY_ROLE
</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">=(</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">)))</span></div>
But if you want to have load-balancing across read-only replicas, you must execute the following code instead of the previous one. For instance, when NODE1 is running under the primary role, all Read-Only intent connections must be directed to NODE2 and NODE3, but if these replicas are not available then these connections should be directed to NODE4. <br />
<br />
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=((</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">),</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=((</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">),</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE3'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">PRIMARY_ROLE </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=((</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">),</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GO</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ALTER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AVAILABILITY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">GROUP</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> MSSQLAG1</span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">MODIFY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">REPLICA</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'NODE4'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="margin: 0px 0px 10.66px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">WITH </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">PRIMARY_ROLE
</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">READ_ONLY_ROUTING_LIST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">=((</span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE1'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE2'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">),</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">'NODE3'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">)))</span></div>
Maybe you are wondering how we can configure an application to connect to secondary replicas to read data only. Well, after configuring the Read-Only Routing list, we must specify the AG Listener Virtual Name plus "ApplicationIntent=ReadOnly" in the connection string. Furthermore, we can also try it out via SSMS by including the additional parameter โApplicationIntent=ReadOnlyโ in the "Additional Connection Parameter" tab box while logging in (click on "options" button to see that box), for more info you can check my previous post about <a href="http://www.percyreyes.com/2017/12/sql-server-always-on-trying-out-read.html">trying out Read-Only intent connections to secondary replicas</a>. That is all for now. I hope you find this post helpful. Let me know any remarks you may have. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-63073332243154829882018-02-20T20:12:00.001+00:002021-04-13T04:59:18.590+01:00Looking deeper into the physical & logical architecture - Transaction Log File<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRz9_0Nfi7Stv1_v4GRsLGoBd4HIkx1MOl92jHHWB0ywkT8o4Lj7lG-kT0wPmbiwF6KXuGUrWcoZi-01NEgXgpyVNJMAs4IsZ6AKBMT6mN7SNJgaLLK3WTt_g0ZaASMBGPhGJRvUv4P1Al/s1600/Physical_Logical_TLog_Architecture.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="396" data-original-width="772" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRz9_0Nfi7Stv1_v4GRsLGoBd4HIkx1MOl92jHHWB0ywkT8o4Lj7lG-kT0wPmbiwF6KXuGUrWcoZi-01NEgXgpyVNJMAs4IsZ6AKBMT6mN7SNJgaLLK3WTt_g0ZaASMBGPhGJRvUv4P1Al/s400/Physical_Logical_TLog_Architecture.jpg" width="400" /></a>Beyond all doubt, it is essential to have a good understanding of the Transaction Log (T-Log) so that we can diagnose unforeseen performance issues related to it and I am sure that almost everyone had at least one. The T-Log is basically a record of all transactions happening to the database. All these transactions are actually first written to the physical T-Log file, and then after a CHECKPOINT, is written to the Data File via the Lazy Writer process. Some of the uses of T-Log are: as a point in time recovery (full recovery model), to record the Start and End of each transaction, every data modification (insert, update, delete) including system SP's, DDL statements to any table including system tables, every extent and page allocation and de-allocation operation, and creation or drop of tables and indexes.<span><a name='more'></a></span><br />
<br />
More specifically, SQL Server uses a Write-Ahead Log Algorithm whereby the Log Buffer Manager always guarantees to write the change descriptions (log records) to the T-Log on disk before it writes the changed data pages to the physical Data Files. Furthermore, Write Ahead Logging also allows SQL Server to ensure some of the ACID properties of database transactions, most significantly durability. It is of paramount importance to keep in mind that there is no performance benefit from having multiple physical log files for the T-Log because it is written sequentially and in a round-robin fashion. Sometimes, we can have many T-Log files for a database as long as there is no enough space on the partition disk, so we can add one more T-Log file on another partition disk so that SQL Server does not stop working until the final solution is provided. <br />
<br />
Instead of having various T-Log files, it is highly advisable to work on preventive actions to optimise the T-Log file usage in terms of performance and availability, for instance, make sure only one Log File is used, use a dedicated drive/array for the T-Log file (use RAID 10 for log drives, if possible. RAID 1 is also acceptable), avoid Log Fragmentation (avoid frequent small auto-grow events, set 2GB, 4GB or 8GB auto-grows for example), Fragmented Log File can slow down the performance of operations that read the T-Log file such as Backup Tasks, Crash Recovery Process, Database start up, Transactional Replication, Database Mirroring, creation of a Database Snapshot, DBBC CHECKDB, DBCC LOGINFO, Change Data Capture, etc.<br />
<br />
So, how can we control the size of the T-Log File? it depends on the database recovery model, in other words, with SIMPLE recovery model: SQL Server auto-truncates and reuse the space after committing the transaction whereas with either FULL or BULK_LOGGED recovery model, a Log Backup is the only action that can truncate the T-Log, nevertheless, you might have seen that <a href="http://www.percyreyes.com/2018/02/some-common-reasons-why-transaction-log.html">after taking Log Backup, the Log space was not truncated yet</a>, this is because some internal T-Log records may still be required by some other database operations like Open transaction, AlwaysOn AG, Replication, CDC, Mirroring, Backup, etc. It is well worth noting that we must try to keep VLF's as less as possible and each VLF of an acceptable size because the more you have the worse the performance will be. I recommend having VLFs of no more of 512MB per one, but it depends entirely on the use of the T-Log file and its growth settings.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNbeRmInfGj0MIRyWBZYS8nCgdeO3PA027R41dw3xDBhecQMiU-5Utk9zJm9y8ulwh7fmEs1pr-QvC5KHZTeN94z5BjgETorsjMMBAt7Yp7tyHdFX8vLcJ4r4iWnfdAveQUvKS7W8I1nm/s1600/Physical_Logical_TLog_Architecture2.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="254" data-original-width="567" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNbeRmInfGj0MIRyWBZYS8nCgdeO3PA027R41dw3xDBhecQMiU-5Utk9zJm9y8ulwh7fmEs1pr-QvC5KHZTeN94z5BjgETorsjMMBAt7Yp7tyHdFX8vLcJ4r4iWnfdAveQUvKS7W8I1nm/s1600/Physical_Logical_TLog_Architecture2.jpg" /></a>Internally, SQL Server divides a Transaction Log file into a number of sections called Virtual Log Files (VLFs). By default, a T-Log will have 4 VLF's when created. After that, the next VLF's will get individually created with each auto grow or manual grow. Here is the base on what SQL Server starts creating the next VLF's: < 64MB = 4VLF's // >= 64MB < 1GB = 8 VLF's // > 1GB = 16VLF's. In SQL2014, 8MB <= 1VLF.<br />
<br />
Finally, if we need to figure out how many VLF's are, we can use the command DBCC LOGINFO which is an undocumented command but is safe to run because it just reads the T-Log, and the most important columns to look for are the following: FileSize (VLF size in bytes), Status (0 Not in use, 2 In use), CreateLSN - it can be used to determine how many VLFโs were created in a log file growth operation, that may be 4, 8 or 16, and this also indicates the Log Sequence Number. <br />
That is all for now, taking this insight into consideration will stand you in good stead for when you have to fix some internal T-Log issues. Thanks for reading. Let me know any remarks you may have. Stay tuned. Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-35680680281495734712018-02-17T16:52:00.001+00:002021-04-13T05:00:17.765+01:00Checking SQL Server stale statisticsClearly, it is of paramount importance to monitor the state of statistics because they always play a significant role in the performance of the whole database. When statistics are not up to date the performance will indeed decrease tremendously over time and I am sure nobody wants to have a sluggish system. How many times did you find yourself in a big problem related to unforeseen performance issues even some days after having carried out dutifully the respective database maintenance tasks? did you wonder why rebuilding index and statistics update tasks are not being good enough? if everything was working smoothly, why did the performance start going down unexpectedly? Why are the indexes not being used as usual? do I need to create more indexes? the answer might be found by digging deeper into the stale statistics. It is worth noting that Statistics contain all the information that SQL Optimizer needs to generate the best possible execution plans for your queries. If they are not up to date then the impact might be disastrous. So, having the right indexes are not good enough when the statistics went stale.<span><a name='more'></a></span><br />
<br />
Generally, it is advisable to update statistics if it is verified that at least 20 per cent of the data changed (as long as they have more than five hundred rows). But can we know how many rows changed for a table so that we can just update its Index Statistics? In SQL Server almost everything can be checked and this is not an exception. Today I an coming with a script to check which Index Statistics have gone stale so that we can focus our work on them and keep expected performance going as well. The script is built on the base of <a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/stats-date-transact-sql">STATS_DATE function</a> which retuns the date of the most recent update for statistics on a table or indexed view.<br />
<br />
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">SELECT</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">DB_NAME</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">()</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> DatabaseName</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">SCHEMA_NAME</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">t</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">[schema_id]</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> SchemaName</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">t</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">name</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> TableName</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">name</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> IndexName</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">STATS_DATE</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">id</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">indid</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'StatsLastUpdate'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">-- using STATS_DATE function </span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">rowcnt
</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'RowCount'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">rowmodctr
</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'#RowsChanged'</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">CAST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">((</span><span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">CAST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">rowmodctr </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">DECIMAL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">20</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">8</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))/</span><span style="background: white; color: magenta; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">CAST</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">rowcnt </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">DECIMAL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">20</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">2</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">*</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> 100.0</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">)</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">DECIMAL</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">(</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">20</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">,</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">2</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">))</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AS</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: red; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">'%RowsChanged'</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">FROM</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="color: #38761d;"><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">sys</span><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">sysindexes</span></span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> ix </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">INNER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">JOIN</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> </span><span style="color: #38761d;"><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">sys</span><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">tables</span></span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> t </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">ON</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> t</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">[object_id] </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">=</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">[id] </span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">WHERE</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">id </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">></span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> 100 </span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">-- excluding system object
statistics </span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AND</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">indid </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">></span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> 0 </span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">-- excluding heaps or tables
that do not any indexes </span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="line-height: normal; margin: 0px;">
<span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">AND</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> ix</span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">.</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">rowcnt </span><span style="background: white; color: grey; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">>=</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"> 500 </span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt; margin: 0px;">-- only indexes with more
than 500 rows </span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; margin: 0px;"></span></div>
<div style="margin: 0px 0px 10.66px;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">ORDER</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">BY</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;"><span style="margin: 0px;"> </span>[%RowsChanged] </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt; line-height: 107%; margin: 0px;">DESC</span></div>
Bearing in mind there are two types of statistics: Column Statistics and Index Statistics. The first type are statistics linked to columns and created automatically as result of querying the columns, so SQL Server normally creates them unless <a href="http://www.percyreyes.com/2017/07/detecting-excessive-compilation-and.html">you have AUTO_CREATE_STATISTICS database option disable</a>, whereas the second one are statistics linked to indexes and these statistics are created at the same time when the indexes are. Likewise, Index Statistics are always updated with FULLSCAN while indexes are being rebuilt. So, there is no need to update Index Statistics explicitly after rebuilding the indexes, if so, it might be harmful because <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/update-statistics-transact-sql">UPDATE STATISTICS command</a> without pamareters is based on default sampling and it is not the best option for the vast majority of cases. <br />
Talking of a little more of Column Statistics, after rebuilding indexes we just have to update Column Statistics and for this case it might be good enough to use default sampling, however, it is also advisable to use FULLSCAN if your environment is worthy of it. <br />
Many of us may be wondering how many times the statistics need to be updated per month? the answer depends entirely on how frequently your data is being changed (updated, inserted, deleted). Updating statistics once a week might be enough for highly transactional environments whereas for others once a month would be more than good. That is all for now, I hope you find the script helpful. Le me know any remarks you may have. Stay tuned.
<span><!--more--></span><span><!--more--></span><span><!--more--></span>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-41642991036430659912018-02-13T15:13:00.002+00:002021-04-13T05:02:53.241+01:00Avoid changing default ANSI database optionsNot having another way of fixing some specific errors, at times some people may consider turning off any <a href="http://msdn.microsoft.com/en-us/library/ms190356.aspx" target="_blank">ANSI database options</a> as a final solution. To be perfectly honest, I do recommend getting to the bottom of each problem and then fixing it at that level instead of changing default ANSI settings (unless it is just a quick fix or is truly necessary because you verified the benefits are significant). For instance, it is by no means uncommon to turn ANSI_WARRINGS off to fix the following error:<br />
<br />
<span style="color: red;">Msg 8152, Level 16, State 14, Line 5<br />String or binary data would be truncated.</span><br />
<br />
<span><a name='more'></a></span>Surprisingly, it may be misunderstood that there is no more to do. First of all, this error occurs because the new data to be inserted or updated cannot be placed into the column due to the data size is beyond the column size. This situation may only be a consequence of a poor database design, so should it be altered the size of the column? if so, are there indexes for this column? what happens with the statistics linked to the column? many things to take into consideration if we wanted to alter the column to give a final solution to this issue, and obviously, that is why the impact on the performance is of paramount importance. By and large, this is not highly advisable to turn off ANSI options as it may cause <a href="http://msdn.microsoft.com/en-us/library/ms190439.aspx" target="_blank">RECOMPILATION</a> for each stored procedure where it was turned off, therefore, it may impact the performance detrimentally and the knock-on effect might be regrettable. So, we should avoid turning off not only ANSI_WARNINGS but also the following ones which will cause the same effect. <br />
<ul>
<li>SET ANSI_DEFAULTS </li>
<li>SET ANSI_NULLS </li>
<li>SET ANSI_PADDING </li>
<li>SET CONCAT_NULL_YIELDS_NULL </li>
</ul>
Furthermore, <a href="http://www.percyreyes.com/2017/07/detecting-excessive-compilation-and.html">recompilation may sometimes be used as a way to 'optimise' specific stored procedures or Ad-Hoc queries</a> because of parameter sniffing issues or bad-written code, but this should be done explicitly and concientiously by using <a href="http://msdn.microsoft.com/en-us/library/ms190439.aspx" target="_blank">WITH RECOMPILE</a> option, <a href="http://msdn.microsoft.com/en-us/library/ms190439.aspx" target="_blank">RECOMPILE query hint</a>, <a href="http://msdn.microsoft.com/en-us/library/ms190439.aspx" target="_blank">sp_recompile</a> system stored procedure or another optimisation strategy. That is all for now, let me know any remarks you may have. Thanks for reading. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-8640077751943255582018-02-02T04:04:00.000+00:002019-07-13T11:56:34.723+01:00Some common reasons why the transaction log cannot be reused automaticallyManaging SQL Server databases may sometimes be challenging especially when it comes to dealing with transaction log file internal space usage. More specifically, today I am going to talk about SQL Server wait types that may prevent SQL Server from automatically reusing transaction log internal space and therefore resulting in running out of space and affecting detrimentally on the availability of the database. For instance, if the recovery model of the database is either Full or Bulk-Logged then you may see a LOG_BACKUP wait type while the next backup log is waited to be run. Consequently, if those databases do not have Log Backups tasks, their transaction log files will be growing without control and when they take all the disk space available the databases will stop working until the internal space of the transaction logs is truncated by executing log backups manually. <br />
Furthermore, even using SIMPLE recovery model the transaction log file might not be truncated automatically because of open transactions, that is why it is essential to execute a COMMIT explicitly and not to use IMPLICIT transactions. Being cognisant of this fact, I am sold on the idea of having total control of the scope of transactions so as to avoiding these issues. Another reason why the transaction log file internal space may not be reused is due to CHECKPOINT wait type when the database has AUTOMATIC CHECKPOINT disable. In this case it is needed to execute a CHECKPOINT command manually. I heartedly recommend not disabling AUTOMATIC CHECKPOINT for any database. <br />
Additionally, with the arrival of SQL Server AlwaysOn, the HADR_SYNC_COMMIT wait type arrived as well. This wait type will be found while an AlwaysOn Availability Group secondary replica is trying to apply or is applying transaction log records of this database to a corresponding secondary databases. However, this wait type might cause a major problem if it is unusually long because the AlwaysOn Availability Group is not working properly as a result of either network issues or at last one secondary replica is slow in log hardening. Thus, it is of paramount importance to ensure Always On Availability Group as a whole is working smoothly and as expected, otherwise there will be no way to truncate the transaction log file and it will indeed risk the availability of the database. Using this code, we can check the wait types for all databases and particularly the HADR_SYNC_COMMIT wait type:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">select</span> session_id, status,command,blocking_session_id, wait_type, wait_time, last_wait_type
<span style="color: blue;">from</span> sys.dm_exec_requests <span style="color: blue;">where</span> session_id>=50
<span style="color: blue;">Go</span>
<span style="color: blue;">select</span> wait_type, waiting_tasks_count, wait_time_ms
<span style="color: blue;">from</span> sys.dm_os_wait_stats
<span style="color: blue;">and</span> wait_type = <span style="color: #006080;">'HADR_SYNC_COMMIT'</span></pre>
<br /></div>
Here I share with you the complete list of wait types available in many modern SQL Server engines:<br />
0 = Nothing<br />
1 = Checkpoint (When a database uses a recovery model and has a memory-optimized data filegroup, you should expect to see the log_reuse_wait column indicate checkpoint or xtp_checkpoint.) Applies to SQL Server 2008 through SQL Server 2017<br />
2 = Log Backup. Applies to SQL Server 2008 through SQL Server 2017<br />
3 = Active backup or restore. Applies to SQL Server 2008 through SQL Server 2017<br />
4 = Active transaction Applies to SQL Server 2008 through SQL Server 2017<br />
5 = Database mirroring. Applies to SQL Server 2008 through SQL Server 2017<br />
6 = Replication. Applies to SQL Server 2008 through SQL Server 2017<br />
7 = Database snapshot creation. Applies to SQL Server 2008 through SQL Server 2017<br />
8 = Log scan Applies to<br />
9 = An Always On Availability Groups secondary replica is applying transaction log records of this database to a corresponding secondary database. Applies to SQL Server 2012 through SQL Server 2017. In earlier versions of SQL Server, 9 = Other (Transient).<br />
10 = For internal use only Applies to SQL Server 2012 through SQL Server 2017<br />
11 = For internal use only Applies to SQL Server 2012 through SQL Server 2017<br />
12 = For internal use only Applies to SQL Server 2012 through SQL Server 2017<br />
13 = Oldest page Applies to SQL Server 2012 through SQL Server 2017<br />
14 = Other Applies to SQL Server 2012 through SQL Server 2017<br />
16 = XTP_CHECKPOINT (When a database uses a recovery model and has a memory-optimized data filegroup, you should expect to see the log_reuse_wait column indicate checkpoint or xtp_checkpoint.) Applies to SQL Server 2014 through SQL Server 2017<br />
More info: <a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql" target="_blank">https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql</a><br />
<br />
That is all for now, let me know any remarks you may have. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-74990733996233278092018-01-21T18:25:00.001+00:002019-07-13T11:57:12.682+01:00How to make uniform all the collations of table columns for all databasesClearly, it is of paramount importance to standardise the collations for all databases in a SQL Server instance in order to avoid dealing with unforeseen conflicts of page code compatibility. We may find ourselves in complicated situations because databases with different collations were migrated from other environments and the new consolidated environment was not prepared to host those new databases, but in one way or another we may need to consolidate them in only one server. It may be compounded by the fact that there may be many character columns of a database using different collations and another collation at database level. Whatโs more, the tempdb database may be using another different collation. So, it may turn out to be not only a complex issue but also time-consuming. <br />
To give you just an example, we can start finding out what character columns are using different collations from SQL_Latin1_General_CP1_CI_AS that we need to change in order to make everything uniform. I am going to display a useful script to do it. In this example I am assuming that we want to use SQL_Latin1_General_CP1_CI_AS for all objects in the database server.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;"><span style="font-family: "calibri";"></span>EXEC</span> sp_MSforeachdb <span style="color: #006080;">'
USE [?]
select db_name(),c.name
from sys.columns c
inner join sys.types t on t.user_type_id= c.user_type_id
inner join sys.tables tb on c.object_id=tb.object_id
where c.collation_name is not null
and t.is_user_defined=0 and tb.is_ms_shipped=0 and tb.name<>'</span><span style="color: #006080;">'sysdiagrams'</span><span style="color: #006080;">'
and c.collation_name<>'</span><span style="color: #006080;">'SQL_Latin1_General_CP1_CI_AS'</span><span style="color: #006080;">'
order by tb.name, c.column_id'</span></pre>
<br /></div>
After that,we can make the decision of changing all character columns for all databases and use SQL_Latin1_General_CP1_CI_AS, and then make that change at database level. Be cautious and make sure as well you have tempdbโs collation set SQL_Latin1_General_CP1_CI_AS.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">EXEC</span> sp_MSforeachdb <span style="color: #006080;">'
USE [?]
if db_name() not in ('</span><span style="color: #006080;">'master'</span><span style="color: #006080;">','</span><span style="color: #006080;">'tempdb'</span><span style="color: #006080;">','</span><span style="color: #006080;">'msdb'</span><span style="color: #006080;">','</span><span style="color: #006080;">'model'</span><span style="color: #006080;">')
begin
select replace( REPLACE( '</span><span style="color: #006080;">'ALTER TABLE '</span><span style="color: #006080;">' + QUOTENAME(SCHEMA_NAME(tb.schema_id)) + '</span><span style="color: #006080;">'.'</span><span style="color: #006080;">'
+ QUOTENAME(tb.name) + '</span><span style="color: #006080;">' ALTER COLUMN '</span><span style="color: #006080;">' + QUOTENAME(c.name) + '</span><span style="color: #006080;">' '</span><span style="color: #006080;">'
+ QUOTENAME(t.name) + '</span><span style="color: #006080;">'('</span><span style="color: #006080;">' + CAST( case when T.NAME='</span><span style="color: #006080;">'NVARCHAR'</span><span style="color: #006080;">' THEN c.max_length/2
WHEN T.NAME='</span><span style="color: #006080;">'NCHAR'</span><span style="color: #006080;">' THEN c.max_length/2 ELSE c.max_length END AS VARCHAR(10)) +'</span><span style="color: #006080;">')'</span><span style="color: #006080;">'
+ '</span><span style="color: #006080;">' COLLATE SQL_Latin1_General_CP1_CI_AS'</span><span style="color: #006080;">' + CASE WHEN c.is_nullable =1 THEN '</span><span style="color: #006080;">' NULL '</span><span style="color: #006080;">'
else '</span><span style="color: #006080;">' NOT NULL ;'</span><span style="color: #006080;">' END, '</span><span style="color: #006080;">'-1'</span><span style="color: #006080;">', '</span><span style="color: #006080;">'MAX'</span><span style="color: #006080;">' ), '</span><span style="color: #006080;">'[text](16)'</span><span style="color: #006080;">', '</span><span style="color: #006080;">'[varchar](max)'</span><span style="color: #006080;">') as cmd
INTO #TblTMP
from sys.columns c
inner join sys.types t on t.user_type_id= c.user_type_id
inner join sys.tables tb on c.object_id=tb.object_id
where c.collation_name is not null
and t.is_user_defined=0 and tb.is_ms_shipped=0 and tb.name<>'</span><span style="color: #006080;">'sysdiagrams'</span><span style="color: #006080;">'
and c.collation_name<>'</span><span style="color: #006080;">'SQL_Latin1_General_CP1_CI_AS'</span><span style="color: #006080;">'
order by tb.name, c.column_id
declare @cmd varchar(max)
declare c_cmd cursor for
select cmd from #TblTMP
open c_cmd
fetch next from c_cmd into @cmd
while (@@fetch_status=0)
begin
exec( @cmd)
fetch next from c_cmd into @cmd
end
close c_cmd
deallocate c_cmd
drop table #TblTMP
end'</span></pre>
<br /></div>
It is worth
noting that while running the script above some errors may arise because of some indexes might be using one of the columns we are trying to alter. So, in this likely event, it is recommendable to drop those indexes and then run the script again. That is all for the time being. Let me know any remarks you may have.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-561041988669032772018-01-12T02:37:00.000+00:002019-07-13T11:57:26.491+01:00MSSQL_ENG003165: An error was encountered while replication was being restored/removed. The database has been left offlineWhile restoring a replicated database without <a href="http://msdn.microsoft.com/en-us/library/aa238405(SQL.80).aspx">KEEP_REPLICATION</a> option, SQL Server will remove replication settings by executing <a href="http://msdn.microsoft.com/en-us/library/ms187753.aspx">sp_restoredbreplication</a> at the end of the process. The 'sp_restoredbreplication' system stored procedure will delete all replication metadata, that is, deletion of 'tr_MStran_alterschemaonly', 'tr_MStran_altertable', 'tr_MStran_altertrigger' and 'tr_MStran_alterview' tiggers (which were created to validate alterations on the replication of tables, triggers, views), disable user tables for replication, and deletion of subscription/publications/articles. Nevertheless, there might be some cases where 'sp_restoredbreplication' cannot be executed successfully and ends up leaving the database OFFLINE. I personally experienced that case and the error was something like this:<br />
<br />
<span style="color: red;">Msg 3165, Level 16, State 1, Line 1 <br />Database โMyDBโ was restored, however an error was encountered while replication was being restored/removed. The database has been left offline. See the topic MSSQL_ENG003165 in SQL Server Books Online. <br />Msg 3167, Level 16, State 1, Line 1 <br />RESTORE could not start database โMyDBโ. <br />Msg 3013, Level 16, State 1, Line 1 <br />RESTORE DATABASE is terminating abnormally.</span><br />
<span style="color: red;"><br /></span>
Looking into this case, I could see that the cause was a <a href="http://msdn.microsoft.com/en-us/library/ms186406.aspx">DDL database trigger</a> which existed inside the database. Let me expand on what I am saying. The database had that trigger to audit some schema changes which were supposed to save into an auditing table. Unfortunately, that auditing table did not exist in the server where the database was being restored, and the deletion of objects of replication settings were not completed, which means that 'sp_restoredbreplication' was not executed correctly. Consequently, the restoration was stopped and SQL Server decided to leave the database OFFLINE. <br />
<br />
In order to restore a copy of this database, we need to disable all DDL database triggers before taking its backup. Only then will the database be restored successfully. The other method to deal with this issue is to change the status to ONLINE manually after the restoration finishes unsuccessfully and also execute 'sp_restoredbreplication'.<br />
<br />
To sum up, we need to proceed with more cautiousness while working with databases linked to replication. That is all for now. Let me know any remarks you may have. Thanks for reading. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-25820414620234017502018-01-04T21:29:00.000+00:002019-07-13T11:57:35.164+01:00Table-valued user-defined functions and the database collationWhen it comes to altering database collations we may face some problems that tend to slow us down at the beginning. Nevertheless, digging into the message errors we might not spot the causes easily. For instance, while executing the following script to change the collation at database level an error may arise informing that some objects depends on it and it is not possible to make that change. Here is the script.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">ALTER</span> <span style="color: blue;">DATABASE</span> MyDBUser <span style="color: blue;">SET</span> RESTRICTED_USER <span style="color: blue;">WITH</span> <span style="color: blue;">ROLLBACK</span> <span style="color: blue;">IMMEDIATE</span>;
<span style="color: blue;">ALTER</span> <span style="color: blue;">DATABASE</span> MyDBUser <span style="color: blue;">COLLATE</span> SQL_Latin1_General_CP1_CI_AS;
<span style="color: blue;">ALTER</span> <span style="color: blue;">DATABASE</span> MyDBUser <span style="color: blue;">SET</span> MULTI_USER <span style="color: blue;">WITH</span> <span style="color: blue;">ROLLBACK</span> <span style="color: blue;">IMMEDIATE</span>;</pre>
<br /></div>
As far as we know collations are heavily linked to character columns, and it includes columns of table-valued user-defined functions as they may have character columns on its definition. When theses functions are created they inherit the database collation by design for their columns. Here the error message:<br />
<br />
<span style="color: red;">Msg 5075, Level 16, State 1, Line 1</span><br />
<span style="color: red;">The object 'TVFUserTable<span style="background-color: transparent; color: red; display: inline; float: none; font-family: "times new roman"; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">'</span> is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.</span><br />
<span style="color: red;">Msg 5072, Level 16, State 1, Line 1</span><br />
<span style="color: red;">ALTER DATABASE failed. The default collation of database 'MyDBUser' cannot be set to SQL_Latin1_General_CP1_CI_AS. </span><br />
<span style="color: red;"><br /></span>
What we just need to do to be able to change the collation at database level is firstly drop every schema-bound objects, then make the change and finally create the objects again. That is all for now. Let me know any remarks you may have.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-77744642669609942982017-12-30T00:09:00.000+00:002019-07-12T18:31:43.411+01:00Memory + CPU support for all Windows Server versions and editionsSome weeks ago I outlined my <a href="http://www.percyreyes.com/2017/12/memory-cpu-support-for-all-sql-server.html" target="_blank">Memory + CPU support compact brief for SQL Server</a>, and now it is time for Windows Server. Undoubtedly, when we are sizing a database server not only take a look at the hardware support for SQL Server but also for Windows Server. Here is the info you might need to have it at hand and make a good use of it.
If any of you want to get closer to related topics you can check out <a href="https://blogs.technet.microsoft.com/matthts/2012/10/13/windows-server-sockets-logical-processors-symmetric-multi-threading" target="_blank">Windows Server โ Sockets, Logical Processors, Symmetric Multi Threading</a> and <a href="https://blogs.technet.microsoft.com/windowsserver/2016/08/25/windows-server-scalability-and-more/" target="_blank">Windows Server scalability and more!</a>
<span style="font-family: "verdana";">
</span>
<br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Server 2016</span></span></span></h2>
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The <span lang="EN" style="color: black; font-size: 10.5pt; margin: 0px;">following table
specifies the limits on physical memory for Windows Server 2016.</span><span style="color: black; font-family: "times new roman" , serif; font-size: 12pt; margin: 0px;"> </span><br />
</span></span><br />
<div style="text-align: left;">
</div>
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; margin: 0px 0px 0px 7.2px; width: 496px;">
<tbody>
<tr style="height: 12.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); height: 12.75pt; margin: 0px; padding: 0in 5.4pt; width: 178.6pt;" valign="bottom" width="238"><div style="line-height: normal; margin: 0px;">
<b style="mso-bidi-font-weight: normal;"><span lang="EN" style="font-size: 10.5pt; margin: 0px;"> </span></b><b style="mso-bidi-font-weight: normal;"><span style="color: black; font-size: 10.5pt; margin: 0px;">Version</span></b><b style="mso-bidi-font-weight: normal;"><span style="font-family: "times new roman" , serif; font-size: 12pt; margin: 0px;"></span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; height: 12.75pt; margin: 0px; padding: 0in 5.4pt; width: 0.75in;" valign="bottom" width="72"><div style="line-height: normal; margin: 0px;">
<b style="mso-bidi-font-weight: normal;"><span style="color: black; font-size: 10.5pt; margin: 0px;">Memory</span></b><b style="mso-bidi-font-weight: normal;"><span style="font-family: "times new roman" , serif; font-size: 12pt; margin: 0px;"></span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; height: 12.75pt; margin: 0px; padding: 0in 5.4pt; width: 139.5pt;" valign="bottom" width="186"><div style="line-height: normal; margin: 0px;">
<b style="mso-bidi-font-weight: normal;"><span style="color: black; font-size: 10.5pt; margin: 0px;">CPU</span></b></div>
</td></tr>
<tr style="height: 20.6pt; mso-yfti-irow: 1;"><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; height: 20.6pt; margin: 0px; padding: 0in 5.4pt; width: 178.6pt;" width="238"><div style="line-height: normal; margin: 0px; text-align: left;">
<span style="color: #2a2a2a; font-size: 10.5pt; margin: 0px;">Windows Server 2016 Datacenter</span></div>
</td><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 20.6pt; margin: 0px; padding: 0in 5.4pt; width: 0.75in;" width="72"><div style="text-align: left;">
</div>
<div style="line-height: normal; margin: 0px; text-align: left;">
<span style="color: black; font-size: 10.5pt; margin: 0px;">24
TB</span></div>
</td><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 20.6pt; margin: 0px; padding: 0in 5.4pt; width: 139.5pt;" valign="bottom" width="186"><div style="text-align: left;">
<span style="color: black; font-size: 10.5pt; margin: 0px;">64 CPU. Unlimited cores</span></div>
</td></tr>
<tr style="height: 25.5pt; mso-yfti-irow: 2; mso-yfti-lastrow: yes;"><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; height: 25.5pt; margin: 0px; padding: 0in 5.4pt; width: 178.6pt;" width="238"><div style="text-align: left;">
<span style="color: #2a2a2a; font-size: 10.5pt; margin: 0px;">Windows Server 2016 Standard</span></div>
</td><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 25.5pt; margin: 0px; padding: 0in 5.4pt; width: 0.75in;" width="72"><div style="text-align: left;">
</div>
<div style="line-height: normal; margin: 0px; text-align: left;">
<span style="color: black; font-size: 10.5pt; margin: 0px;">24
TB</span></div>
</td><td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 25.5pt; margin: 0px; padding: 0in 5.4pt; width: 139.5pt;" valign="bottom" width="186"><div style="text-align: left;">
<span style="color: black; font-size: 10.5pt; margin: 0px;">64 CPU. Unlimited cores</span><span style="font-family: "times new roman" , serif; font-size: 12pt; margin: 0px;"></span></div>
</td>
</tr>
</tbody></table>
</span></span><span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike><span style="font-size: small;"></span><span style="font-family: "times new roman";"></span><br /></span></span></span>
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b>Physical Memory Limits: Windows Server 2012 (R2)</b></span></span></span><br />
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2012. Windows Server 2012 is available only
in X64 editions.</span></span><span style="font-family: "verdana";"><br /></span><br />
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Memory</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">CPU</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2012 Datacenter</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64
CPU or 640 logical processors (or 320 with Hyper-V Role)</span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2012 Standard</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64
CPU or 640 logical processors (or 320 with Hyper-V Role)</span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2012 Essentials</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2
CPU</span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2012 Foundation</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1
CPU</span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Storage Server 2012 Workgroup</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Storage Server 2012 Standard</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Hyper-V
Server 2012</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 188.25pt;" valign="top" width="251"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<br /></div>
</td>
</tr>
</tbody></table>
<br />
</span>
<br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Server 2008 R2</span></span></span></h2>
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2008 R2. Windows Server 2008 R2
is available only in 64-bit editions. <span style="background-color: transparent; color: black; display: inline; float: none; font-family: "verdana" , sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">Windows
Server 2008 R2 for Itanium-Based Systems support up to 2TB.</span></span></span><br />
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Memory</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">CPU</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 R2 Datacenter</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64
CPU or </span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">256 logical
processors (<span style="color: #333333; margin: 0px;">or 64 with Hyper-V Role )</span></span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 R2 Enterprise</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8
CPU or </span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">256 logical
processors (<span style="color: #333333; margin: 0px;">or 64 with Hyper-V Role )</span></span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 R2 Foundation</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 R2 Standard</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4
CPร or </span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">256 logical
processors (<span style="color: #333333; margin: 0px;">or 64 with Hyper-V Role )</span></span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
HPC Server 2008 R2 </span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 193.5pt;" width="258"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Web Server 2008 R2</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 59.25pt;" width="79"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 176.25pt;" valign="top" width="235"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4
CPร or </span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">256 logical
processors (<span style="color: #333333; margin: 0px;">or 64 with Hyper-V Role )</span></span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
</tbody></table>
<br />
</span><br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b>Physical Memory Limits: Windows Server 2008</b></span></span></span></div>
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2008. Limits greater than 4 GB for 32-bit
Windows assume that </span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx"><span lang="EN" style="color: blue; margin: 0px;">PAE</span></a></span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> is enabled.</span></span></div>
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<br /></div>
</td>
<td colspan="2" style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 86pt;" width="115"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Memory</span></b></div>
</td>
<td colspan="2" style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 269.5pt;" valign="top" width="359"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">CPU</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X86</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X64</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">x86 (SP2)</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">x64 (SP2)</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 Datacenter</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32
CPU or 32 logical processors</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32
CPU or 64 logical processors (or 24 with Hyper-V) </span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 Enterprise</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8
CPU or 32 logical processors</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8
CPU or 64 logical processors(or 24 with Hyper-V)</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 HPC Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Server 2008 Standard</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4
CPU or 32 logical processors</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4
CPU or 64 logical processors(or 24 with Hyper-V)</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Small Business Server 2008</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
</tr>
<tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 113.25pt;" width="151"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows
Web Server 2008</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 40.5pt;" width="54"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 45.5pt;" width="61"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 107.5pt;" valign="top" width="143"><div style="line-height: normal; margin: 0px;">
<br /></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 2.25in;" valign="top" width="216"><div style="line-height: normal; margin: 0px;">
<br />
<br /></div>
</td>
</tr>
</tbody></table>
</span><br />
<div style="line-height: normal; margin: 0px 0px 13.33px 48px;">
<span style="font-family: "verdana";"><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2008 for
Itanium-Based Systems support up to 2TB</span></span><br />
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">SP1+ </span><b><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Hyper-V Enabled support up to </span></b><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">16 logical processors</span></span><br />
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">SP1+ </span><b><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Hyper-V Enabled + KB956710 installed support up to </span></b><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">24 logical processors</span></span></div>
<span style="font-family: "verdana";">
</span>
<br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Home Server</span></span></span></h2>
<span style="font-family: "verdana";">
</span>
<br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Home Server is available only in a 32-bit
edition. The physical memory limit is 4 GB. </span></span></div>
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b>Physical Memory Limits: Windows Server 2003 R2</b></span></span></span><br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2003 R2. Limits over 4 GB for 32-bit
Windows assume that </span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx"><span lang="EN" style="color: blue; margin: 0px;">PAE</span></a></span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> is enabled.</span></span></div>
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 128.1pt;" width="171"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X86</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 94.5pt;" width="126"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 R2 Datacenter Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 128.1pt;" width="171"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB (16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 94.5pt;" width="126"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 R2 Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 128.1pt;" width="171"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB (16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 94.5pt;" width="126"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 R2 Standard Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 128.1pt;" width="171"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 94.5pt;" width="126"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
</tr>
</tbody></table>
<br />
</span><br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Server 2003 with
Service Pack 2 (SP2)</span></span></span></h2>
<span style="font-family: "verdana";">
</span>
<br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2003 with Service Pack 2 (SP2). Limits over
4 GB for 32-bit Windows assume that </span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx"><span lang="EN" style="color: blue; margin: 0px;">PAE</span></a></span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> is enabled.</span></span></div>
<span style="font-family: "verdana";">
<br />
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt; width: 261.75pt;" width="349"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 135pt;" width="180"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X86</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 31.5pt;" width="42"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X64</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 41.25pt;" width="55"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">IA64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 261.75pt;" width="349"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 2 (SP2),
Datacenter Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 135pt;" width="180"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 31.5pt;" width="42"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 41.25pt;" width="55"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 261.75pt;" width="349"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 2 (SP2),
Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 135pt;" width="180"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 31.5pt;" width="42"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 41.25pt;" width="55"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 261.75pt;" width="349"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 2 (SP2), Standard
Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 135pt;" width="180"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 31.5pt;" width="42"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 41.25pt;" width="55"></td>
</tr>
</tbody></table>
<br />
</span><br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Server 2003
with Service Pack 1 (SP1)</span></span></span></h2>
<span style="font-family: "verdana";">
</span>
<br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2003 with Service Pack 1 (SP1). Limits over
4 GB for 32-bit Windows assume that </span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx"><span lang="EN" style="color: blue; margin: 0px;">PAE</span></a></span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> is enabled.</span></span></div>
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 1.75in;" width="168"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X86</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 0.95in;" width="91"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X64</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">IA64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 1 (SP1),
Datacenter Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 1.75in;" width="168"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 0.95in;" width="91"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 1 (SP1),
Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 1.75in;" width="168"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 0.95in;" width="91"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 TB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003 with Service Pack 1 (SP1), Standard
Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 1.75in;" width="168"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 0.95in;" width="91"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt;"></td>
</tr>
</tbody></table>
<br />
</span><br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;">Physical Memory Limits: Windows Server 2003</span></span></span></h2>
<span style="font-family: "verdana";">
</span>
<br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span style="font-family: "verdana";"><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Server 2003. Limits over 4 GB for 32-bit Windows assume
that </span><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx"><span lang="EN" style="color: blue; margin: 0px;">PAE</span></a></span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> is enabled.</span></span></div>
<span style="font-family: "verdana";">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-image: none; border: 1.33px solid rgb(0, 0, 0); margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">X86</span></b></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">IA64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003, Datacenter Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">512 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003, Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB(16 GB with 4GT)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">512 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003, Standard Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"></td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Server 2003, Web Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"></td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Small Business Server 2003</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"></td>
</tr>
<tr style="mso-yfti-irow: 6;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Compute Cluster Server 2003</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 7;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Storage Server 2003, Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"></td>
</tr>
<tr style="height: 7.75pt; mso-yfti-irow: 8; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-image: none; border-style: none solid solid; border-width: 0px 1.33px 1.33px; height: 7.75pt; margin: 0px; padding: 0.75pt; width: 248.25pt;" width="331"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Storage Server 2003</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 7.75pt; margin: 0px; padding: 0.75pt; width: 96.75pt;" width="129"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; height: 7.75pt; margin: 0px; padding: 0.75pt; width: 42.75pt;" width="57"><br /></td>
</tr>
</tbody></table>
</span><br />
<h2 style="margin: 2.66px 0px 0px;">
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"> </span></span></span></h2>
<span style="font-family: "verdana";">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b>Windows Server 2003: The number of processors and the
amount of physical RAM that are supported</b></span></span></span><br />
<div style="line-height: normal; margin: 0px;">
<span style="font-family: "verdana";"><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table compares the number of processors and the
amount of physical RAM that are supported by the x64-based versions of Windows Server
2003 and by Windows XP Professional x64 Edition to those that are supported by
the 32-bit versions.</span></span></div>
<span style="font-family: "verdana";">
</span>
<div style="line-height: normal; margin: 0px 0px 13.33px; vertical-align: middle;">
</div>
<span style="font-family: "verdana";">
<br />
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Operating system</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Number of processors</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Physical RAM</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Standard Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 gigabytes (GB)</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Standard x64 Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Enterprise Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Enterprise x64 Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 terabyte </span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Datacenter Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows Server 2003, Datacenter x64 Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">64</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 terabyte</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 7;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows XP Professional</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 8; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Microsoft Windows XP Professional x64 Edition</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
</tbody></table>
<br />
<div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Notes</span></b><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"> </span></div>
<br />
<div style="line-height: normal; margin: 0px 0px 0px 80px; text-indent: -0.25in;">
<span lang="EN-US" style="color: #333333; font-family: "symbol"; font-size: 10pt; margin: 0px;"><span style="margin: 0px;">ยท<span style="font-size-adjust: none; font-stretch: normal; font: 7pt "Times New Roman"; margin: 0px;">
</span></span></span><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">x86-based versions of
Windows Server 2003 that are running on a computer that uses a multicore
processor or a hyper-threading processor support a maximum number of 32 logical
processors.</span></div>
<br />
<div style="line-height: normal; margin: 0px 0px 0px 80px; text-indent: -0.25in;">
<span lang="EN-US" style="color: #333333; font-family: "symbol"; font-size: 10pt; margin: 0px;"><span style="margin: 0px;">ยท<span style="font-size-adjust: none; font-stretch: normal; font: 7pt "Times New Roman"; margin: 0px;">
</span></span></span><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">x64-based versions of
Windows Server 2003 that are running on a computer that uses a multicore
processor or a hyper-threading processor support a maximum number of 64 logical
processors.</span></div>
<br />
<div style="line-height: normal; margin: 15px 0px;">
<b><span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Memory
allocation settings</span></b></div>
<div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: #333333; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table compares the memory allocation settings that
are supported by the x64-based versions of Windows Server 2003 and Windows XP
Professional x64 Edition to those that are supported by the 32-bit versions. <span style="display: none; margin: 0px;">Collapse this tableExpand this table</span></span></div>
<br />
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-image: none; border: medium; margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Memory allocation settings</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">32-bit versions</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
<td style="background-color: transparent; border-color: rgb(201, 201, 201) rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">x64-based versions</span></b><span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;"></span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Total amount of virtual address space</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">16 terabytes</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Amount of virtual address space per 32-bit process</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 GB (3 GB if the <b>/3GB</b> switch is added to the Boot.ini
file)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 GB (4 GB if the <b>/LARGEADDRESSAWARE</b> option is used)</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Amount of virtual address space for the 64-bit processes</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Not applicable</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8 terabytes</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Amount of paged pool memory</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">470 megabytes (MB)</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Amount of non-paged pool memory</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">256 MB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Size of system cache</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 GB</span></div>
</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(201, 201, 201); border-image: none; border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; padding: 3.75pt 7.5pt 3.75pt 0in;" valign="top"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="color: black; font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 terabyte</span></div>
</td>
</tr>
</tbody></table>
<br />
<div style="margin: 0px 0px 13.33px;">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 11pt; line-height: 115%; margin: 0px;"><span style="color: #365f91;"><b>Physical Memory Limits: Windows 8</b></span></span></div>
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The follo</span><span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">wing table specifies the limits on physical
memory for Windows 8.</span></div>
<table border="0" cellpadding="0" style="margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X86</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 8
Enterprise</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">512 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 8
Professional</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">512 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 8</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
</tbody></table>
<div style="margin: 2.66px 0px 0px;">
<span style="color: #365f91;"><b>Physical Memory Limits: Windows 7</b></span></div>
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows 7.</span></div>
<table border="0" cellpadding="0" style="margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X86</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Ultimate</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">192 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Enterprise</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">192 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Professional</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">192 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Home Premium</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">16 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Home Basic</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows 7
Starter</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">2 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">N/A</span></div>
</td>
</tr>
</tbody></table>
<div style="margin: 2.66px 0px 0px;">
<span style="color: #365f91;"><b>Physical
Memory Limits: Windows Vista</b></span></div>
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows Vista.</span></div>
<table border="0" cellpadding="0" style="margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X86</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Ultimate</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Enterprise</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Business</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Home Premium</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">16 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Home Basic</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">8 GB</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows Vista
Starter</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">1 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><br /></td>
</tr>
</tbody></table>
<div style="margin: 2.66px 0px 0px;">
<span style="color: #365f91;"><b>Physical Memory Limits: Windows XP</b></span></div>
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">The following table specifies the limits on physical
memory for Windows XP.</span></div>
<table border="0" cellpadding="0" style="margin: 0px;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Version</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X86</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on X64</span></b></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div align="center" style="line-height: normal; margin: 0px; text-align: center;">
<b><span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Limit on IA64</span></b></div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows XP</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">4 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">128 GB (not supported)</span></div>
</td>
</tr>
<tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes;">
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">Windows XP
Starter Edition</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">512 MB</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">N/A</span></div>
</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; padding: 0.75pt;"><div style="line-height: normal; margin: 0px 0px 13.33px;">
<span lang="EN-US" style="font-family: "verdana" , sans-serif; font-size: 10.5pt; margin: 0px;">N/A</span></div>
</td>
</tr>
</tbody></table>
<br />
<div style="line-height: normal; margin: 0px 0px 13.33px;">
<br /></div>
<b></b><i></i><u></u><sub></sub><sup></sup><strike></strike></span>Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-71873435633359253152017-12-21T02:35:00.001+00:002021-04-10T04:09:20.586+01:00Always On: Trying out Read-Only intent connections to secondary replicasSQL Server Always On Availability Group enables us to connect Read-Only workloads to secondary replicas automatically by using differents ways. For instance, to connect .NET applications to secondary replicas, we must also include "ApplicationIntent=ReadOnly" besides the AG Listener Virtual Name in the connection string. More specifically, <a href="http://www.percyreyes.com/2018/01/configuring-read-only-routing-and-load.html">after configuring the Read-Only Routing list</a>, this would be the connection string if we had an Availability Group with a Listener called "AGLISTENER" (in these examples it is used Windows Authentication).<br />
<br />
<b>Server=tcp:AGLISTENER,1433;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True</b><br />
<b></b><br />
But that is not all, it is also possible to establish connection to secondary replicas via SQLCMD tool by using the new parameter -K (and optionally -M for faster detection of and connection to the active server). If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica. So, this would be a simple example of how to use SQLCMD with -K and -M parameters. I couldn't have been simpler.<br />
<br />
<b>Sqlcmd -S AGLISTENER -E -K ReadOnly -M</b><br />
<b></b><br />
And last but not least, we can also do it by using SSMS Connection Dialog window by using โApplicationIntent=ReadOnlyโ in the "Additional Connection Parameter" tab. I also wrote another post about it with more details, <a href="http://www.percyreyes.com/2016/05/how-to-test-read-only-intent-connection.html">take a look at it</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE4WhtwT8jtfbMZVOv4UPDZex_7mEdmk5GJ5qjUUKU5FObwukoPjrxvZej9nqDuNELZuc3BizCRJ-EO2zxhYyrYHoCIqe6ElYvkcuGCnt1flxLW4n2-6AyBAd7nnyJGjykPKrgAXGf2XH5/s1600/AdditionalConnectionParameters_ReadOnlyIntent.tif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="891" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE4WhtwT8jtfbMZVOv4UPDZex_7mEdmk5GJ5qjUUKU5FObwukoPjrxvZej9nqDuNELZuc3BizCRJ-EO2zxhYyrYHoCIqe6ElYvkcuGCnt1flxLW4n2-6AyBAd7nnyJGjykPKrgAXGf2XH5/w640-h193/AdditionalConnectionParameters_ReadOnlyIntent.tif" width="640" /></a></div>
<br />
To sum up, these are the basic ways to try out Read-Only intent connections to secondary replicas, the first way is ideal for developers whereas the second and third if you are working as a DBA.<br />
That is all for now. Let me know any remarks you may have. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-34458267072797610652017-12-16T02:47:00.000+00:002019-07-13T11:58:04.958+01:00Implementing dynamic PIVOT in SQL ServerIt is well known that <a href="http://www.percyreyes.com/2005/12/the-power-of-pivot-in-sql-server-2005.html" target="_blank">PIVOT is one of the new features included in SQL Server 2005</a> which allows to convert rows into columns. But what happens if we wanted to make it dynamic going beyond limits respect to the number of columns? Today in this post I am going to show you how to do it (applies to SQL Server 2005 through SQL Server 2017). To begin with, we are going to use the following example to analyse some data, which will be pivoted shortly after.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">USE</span> AdventureWorks
<span style="color: blue;">GO</span>
<span style="color: blue;">SELECT</span> CustomerID,<span style="color: blue;">YEAR</span>(DueDate) [<span style="color: blue;">Year</span>], TotalDue
<span style="color: blue;">FROM</span> Sales.SalesOrderHeader
<span style="color: blue;">ORDER</span> <span style="color: blue;">BY</span> CustomerID</pre>
<br /></div>
According to the result set, there are many sales per customer between the years 2001 and 2004.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOUeTyzjfQLdql8nQelFdijxOmHTThLS0lsviBaxwqKLao8x_oQLNqIj1_Srgr1cFnqt85UJUhzrFmG2kZ0dFGaP3WuqnKwNV1owEdH1imCRy5vqk4jTtybf1FcjgPNvQoE8eHg87Si2l0/s1600/IMG1.gif" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOUeTyzjfQLdql8nQelFdijxOmHTThLS0lsviBaxwqKLao8x_oQLNqIj1_Srgr1cFnqt85UJUhzrFmG2kZ0dFGaP3WuqnKwNV1owEdH1imCRy5vqk4jTtybf1FcjgPNvQoE8eHg87Si2l0/s1600/IMG1.gif" /></a><br />
<br />
In order to pivot the 'TotalDue' per 'Year' we do need to indicate each year in the PIVOT clause. In this case we do also need to know the years which will be taken into account. For instance, this query will pivot 'TotalDue' for the years 2001, 2002, 2003, and 2004. <br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">SELECT</span> CustomerID, [2001] <span style="color: blue;">AS</span> <span style="color: #006080;">'2001'</span>, [2002] <span style="color: blue;">AS</span> <span style="color: #006080;">'2002'</span>, [2003] <span style="color: blue;">AS</span> <span style="color: #006080;">'2003'</span>, [2004] <span style="color: blue;">AS</span> <span style="color: #006080;">'2004'</span>
<span style="color: blue;">FROM</span> (
<span style="color: blue;">SELECT</span> CustomerID,<span style="color: blue;">YEAR</span>(DueDate) [<span style="color: blue;">Year</span>], TotalDue <span style="color: blue;">FROM</span> Sales.SalesOrderHeader
) pvt
PIVOT (<span style="color: blue;">SUM</span>(TotalDue) <span style="color: blue;">FOR</span> [<span style="color: blue;">Year</span>] <span style="color: blue;">IN</span> ([2001],[2002],[2003],[2004])) <span style="color: blue;">AS</span> Child
<span style="color: blue;">ORDER</span> <span style="color: blue;">BY</span> CustomerID</pre>
<br /></div>
Having successfully executed the query, we will get the following nice result:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKZ5HuU3saunnMtZ0zm8Jh1rZCaWJf0h5JiKcffQFLVin9duyf-eLc0pr7XF8GEdJXJMWJhB2Yu3sqfdjLo0QvSL0Ey0xfYHyJyZhytncPVTfMPgmS_lsGGkUz85EfNg7tFI3G3FHuiz1B/s1600/IMG2.gif" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKZ5HuU3saunnMtZ0zm8Jh1rZCaWJf0h5JiKcffQFLVin9duyf-eLc0pr7XF8GEdJXJMWJhB2Yu3sqfdjLo0QvSL0Ey0xfYHyJyZhytncPVTfMPgmS_lsGGkUz85EfNg7tFI3G3FHuiz1B/s1600/IMG2.gif" /></a><br />
Up to now, everything seems to be perfect. Nevertheless, what's going on if we wanted to pivot for many more years? Obviously, we would have to deal with a big limitation at first glance since we will need to add the years manually inside the query, but it does not make sense for a real business case. As a result, we can say that PIVOT is not scalable, I mean that PIVOT is not 'dynamic' by design. Luckily, the purpose of this post is to show how to implement an algorithm to simulate a dynamic PIVOT in SQL Server by using the native PIVOT clause and <a href="http://technet.microsoft.com/es-es/library/ms175170.aspx" target="_blank">sp_executesql</a>.<br />
<br />
The algorithm is quite simple and does not deserve major explanation, however, I am going to say that this will only create a query dynamically to pivot 'TotalDue' by adding all years inside, and finally the output code will be executed via sp_executesql.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">DECLARE</span> @TableYears <span style="color: blue;">AS</span> <span style="color: blue;">TABLE</span>([<span style="color: blue;">Year</span>] <span style="color: blue;">INT</span> <span style="color: blue;">NOT</span> <span style="color: blue;">NULL</span>)
<span style="color: blue;">DECLARE</span> @<span style="color: blue;">Year</span> <span style="color: blue;">INT</span>, @YearsPVT NVARCHAR(<span style="color: blue;">MAX</span>)
INSERT <span style="color: blue;">INTO</span> @TableYears <span style="color: blue;">SELECT</span> <span style="color: blue;">DISTINCT</span> <span style="color: blue;">YEAR</span>(DueDate) <span style="color: blue;">AS</span> [<span style="color: blue;">Year</span>] <span style="color: blue;">FROM</span> Sales.SalesOrderHeader
<span style="color: blue;">SET</span> @<span style="color: blue;">Year</span> = (<span style="color: blue;">SELECT</span> <span style="color: blue;">MIN</span>([<span style="color: blue;">Year</span>]) <span style="color: blue;">FROM</span> @TableYears)
<span style="color: blue;">SET</span> @YearsPVT=N<span style="color: #006080;">''</span>
<span style="color: blue;">WHILE</span> @<span style="color: blue;">Year</span> <span style="color: blue;">IS</span> <span style="color: blue;">NOT</span> <span style="color: blue;">NULL</span>
<span style="color: blue;">BEGIN</span>
<span style="color: blue;">SET</span> @YearsPVT = @YearsPVT + N<span style="color: #006080;">',['</span>+ <span style="color: blue;">CONVERT</span>(NVARCHAR(10),@<span style="color: blue;">Year</span>) + N<span style="color: #006080;">']'</span>
<span style="color: blue;">SET</span> @<span style="color: blue;">Year</span> = (<span style="color: blue;">SELECT</span> <span style="color: blue;">MIN</span>([<span style="color: blue;">Year</span>]) <span style="color: blue;">FROM</span> @TableYears <span style="color: blue;">WHERE</span> [<span style="color: blue;">Year</span>]>@<span style="color: blue;">Year</span>)
<span style="color: blue;">END</span>
<span style="color: blue;">SET</span> @YearsPVT = <span style="color: blue;">SUBSTRING</span>(@YearsPVT,2,LEN(@YearsPVT))
<span style="color: blue;">PRINT</span> @YearsPVT
<span style="color: blue;">DECLARE</span> @<span style="color: blue;">SQL</span> NVARCHAR(<span style="color: blue;">MAX</span>)
<span style="color: blue;">SET</span> @<span style="color: blue;">SQL</span> = N<span style="color: #006080;">'SELECT *
FROM (
SELECT CustomerID,YEAR(DueDate) [Year], TotalDue FROM Sales.SalesOrderHeader
) pvt
PIVOT (SUM(TotalDue) FOR [Year] IN ('</span> + @YearsPVT + <span style="color: #006080;">')) AS Child
ORDER by CustomerID'</span>
<span style="color: blue;">EXECUTE</span> sp_executesql @SQL</pre>
<br /></div>
Now I am going to illustrate another example by using data from Northwind database. <br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">SELECT</span> P.ProductID, C.CategoryName, OD.UnitPrice * OD.Quantity <span style="color: blue;">AS</span> TotalAmount
<span style="color: blue;">FROM</span> Products P
<span style="color: blue;">INNER</span> <span style="color: blue;">JOIN</span> dbo.[<span style="color: blue;">Order</span> Details] OD
<span style="color: blue;">ON</span> P.ProductID=OD.ProductID
<span style="color: blue;">INNER</span> <span style="color: blue;">JOIN</span> Categories C
<span style="color: blue;">ON</span> C.CategoryID=P.CategoryID</pre>
<br /></div>
Here the simple result without PIVOT.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggbTPqoL1tNOhpM_9KXJCVN56rP8BozCtwMyjMl6FkcIVDxRNA1q9KUmjv_5eVnduHP9T9JmMccRH6pglNPhvqhZxLZCdIDNr_oCcuxWPUJ3xwu15M9umbZ0462zJygxZIJ0aK-SmcAHzc/s1600/IMG3.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggbTPqoL1tNOhpM_9KXJCVN56rP8BozCtwMyjMl6FkcIVDxRNA1q9KUmjv_5eVnduHP9T9JmMccRH6pglNPhvqhZxLZCdIDNr_oCcuxWPUJ3xwu15M9umbZ0462zJygxZIJ0aK-SmcAHzc/s1600/IMG3.jpg" /></a><br />
<blockquote>
</blockquote>
Using PIVOT in its old-fashioned way:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">SELECT</span> ProductID, [Beverages], [Condiments], [Confections], [Dairy Products],
[Grains/Cereals], [Meat/Poultry],[Produce],[Seafood]
<span style="color: blue;">FROM</span>
(
<span style="color: blue;">SELECT</span> P.ProductID, C.CategoryName, (OD.UnitPrice * OD.Quantity) <span style="color: blue;">AS</span> Monto
<span style="color: blue;">FROM</span> Products P
<span style="color: blue;">INNER</span> <span style="color: blue;">JOIN</span> dbo.[<span style="color: blue;">Order</span> Details] OD
<span style="color: blue;">ON</span> P.ProductID=OD.ProductID
<span style="color: blue;">INNER</span> <span style="color: blue;">JOIN</span> Categories C
<span style="color: blue;">on</span> C.CategoryID=P.CategoryID
) PIV
PIVOT (<span style="color: blue;">SUM</span>(Monto) <span style="color: blue;">FOR</span> CategoryName <span style="color: blue;">IN</span> ([Beverages], [Condiments], [Confections], [Dairy Products],
[Grains/Cereals], [Meat/Poultry],[Produce],[Seafood])) <span style="color: blue;">AS</span> Child</pre>
<br /></div>
Having executed the code above, we will get this result pivoted.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhozKfpsit9Mq3blBLDR-0sfIOtV7CHn0p3jxQQlMDrfy-qo6aDzP64g_OYUCCDIyL13gnqeTE1sQ73aFh9R5RQMrAatAq-zuDgnAwGfNKPiL7FwvZBad4T2mBqM2DoJKn_hV3ALnNQ8-ch/s1600/IMG4.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhozKfpsit9Mq3blBLDR-0sfIOtV7CHn0p3jxQQlMDrfy-qo6aDzP64g_OYUCCDIyL13gnqeTE1sQ73aFh9R5RQMrAatAq-zuDgnAwGfNKPiL7FwvZBad4T2mBqM2DoJKn_hV3ALnNQ8-ch/s1600/IMG4.jpg" /></a><br />
<br />
Finally, using dynamic PIVOT the result will be the same.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">DECLARE</span> @CatPVT <span style="color: blue;">AS</span> NVARCHAR(<span style="color: blue;">MAX</span>), @Categorias <span style="color: blue;">AS</span> <span style="color: blue;">VARCHAR</span>(20)
<span style="color: blue;">DECLARE</span> @CatID <span style="color: blue;">INT</span>
<span style="color: blue;">SET</span> @CatID=(<span style="color: blue;">SELECT</span> <span style="color: blue;">MIN</span>(CategoryID) <span style="color: blue;">FROM</span> Categories)
<span style="color: blue;">SET</span> @Categorias = ( <span style="color: blue;">SELECT</span> CategoryName <span style="color: blue;">FROM</span> Categories <span style="color: blue;">WHERE</span> CategoryID = @CatID)
<span style="color: blue;">SET</span> @CatPVT = N<span style="color: #006080;">''</span>
<span style="color: blue;">WHILE</span> @Categorias <span style="color: blue;">IS</span> <span style="color: blue;">NOT</span> <span style="color: blue;">NULL</span>
<span style="color: blue;">BEGIN</span>
<span style="color: blue;">SET</span> @CatPVT = @CatPVT + N<span style="color: #006080;">',['</span>+ @Categorias +N<span style="color: #006080;">']'</span>
<span style="color: blue;">SET</span> @Categorias = (<span style="color: blue;">SELECT</span> <span style="color: blue;">TOP</span>(1) CategoryName
<span style="color: blue;">FROM</span> Categories <span style="color: blue;">WHERE</span> CategoryID > @CatID
<span style="color: blue;">ORDER</span> <span style="color: blue;">BY</span> CategoryID <span style="color: blue;">ASC</span>)
<span style="color: blue;">SET</span> @CatID=(<span style="color: blue;">SELECT</span> <span style="color: blue;">MIN</span>(CategoryID) <span style="color: blue;">FROM</span> Categories <span style="color: blue;">WHERE</span> Categoryname=@Categorias)
<span style="color: blue;">END</span>
<span style="color: blue;">print</span> @CatPVT
<span style="color: blue;">SET</span> @CatPVT = <span style="color: blue;">SUBSTRING</span>(@CatPVT, 2, LEN(@CatPVT))
<span style="color: blue;">DECLARE</span> @<span style="color: blue;">sql</span> <span style="color: blue;">AS</span> NVARCHAR(<span style="color: blue;">MAX</span>)
<span style="color: blue;">SET</span> @<span style="color: blue;">sql</span> = N<span style="color: #006080;">'SELECT *
FROM (SELECT P.ProductID, C.CategoryName, (OD.UnitPrice * OD.Quantity) AS Monto
FROM Products P
INNER JOIN dbo.[Order Details] OD
ON P.ProductID=OD.ProductID
INNER JOIN Categories C
ON C.CategoryID=P.CategoryID
) PIV
PIVOT (SUM(Monto) FOR CategoryName IN ('</span>+ @CatPVT + <span style="color: #006080;">')) AS Child'</span>
<span style="color: blue;">EXEC</span> sp_executesql @sql</pre>
<br /></div>
As you have seen, dynamic PIVOT is truly useful for a real business case. Therefore, I hope you make the most out of this algorithm. That is all for now, let me know any remarks you may have. Thanks for reading. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-27416689589715259032017-12-02T23:00:00.000+00:002019-07-13T12:00:24.867+01:00Memory + CPU support for all SQL Server versions and editionsIt is by no means uncommon to think that every DBA should have a list like this following one in order to have clear some aspects before installing/implementing new database environments. It is a compact brief of what different versions and editions of SQL Server support in terms of memory and CPU resources. Consequently, I share with you my resume, and I hope you find it useful. Let me know any remarks you may have.<br />
<br />
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 782px;">
<colgroup><col style="mso-width-alt: 5120; mso-width-source: userset; width: 105pt;" width="140"></col>
<col style="mso-width-alt: 4315; mso-width-source: userset; width: 89pt;" width="118"></col>
<col style="mso-width-alt: 4242; mso-width-source: userset; width: 87pt;" width="116"></col>
<col style="mso-width-alt: 1280; mso-width-source: userset; width: 26pt;" width="35"></col>
<col style="mso-width-alt: 5010; mso-width-source: userset; width: 103pt;" width="137"></col>
<col style="mso-width-alt: 4278; mso-width-source: userset; width: 88pt;" width="117"></col>
<col style="mso-width-alt: 4352; mso-width-source: userset; width: 89pt;" width="119"></col>
</colgroup><tbody>
<tr height="21" style="height: 15.75pt;">
<td colspan="3" height="21" style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(255, 255, 255); border-style: solid solid none; border-width: 1.33px 1.33px 0px; height: 15.75pt; margin: 0px; width: 281pt;" width="374"><b><span style="color: white; font-family: "calibri";">SQL Server 2016/2017</span></b></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 26pt;" width="35"></td>
<td colspan="3" style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(255, 255, 255); border-style: solid solid none; border-width: 1.33px 1.33px 0px; margin: 0px; width: 280pt;" width="373"><b><span style="color: white; font-family: "calibri";">SQL Server 2014</span></b></td>
</tr>
<tr height="38" style="height: 28.5pt; mso-height-source: userset;">
<td height="38" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 700; height: 28.5pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">SQL
Server edition</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; margin: 0px; width: 89pt;" width="118"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum memory supported</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px; width: 87pt;" width="116"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum Compute Capacity</span></b></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 700; margin: 0px; text-decoration: none; width: 103pt;" width="137">SQL
Server edition</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid none; border-width: 1.33px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 700; margin: 0px; text-decoration: none; width: 88pt;" width="117">Maximum
memory supported</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 700; margin: 0px; text-decoration: none; width: 89pt;" width="119">Maximum Compute Capacity</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td height="20" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 15pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Enterprise</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">OS max</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Enterprise</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">OS
max</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td height="20" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 15pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Standard</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">128 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">4<span style="margin: 0px;">
</span>CPU or 24 cores</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Business Intelligence</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">128 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">4 CPU or 16 cores</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td height="20" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 15pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Web</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">64 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">4 CPU or 16 cores</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Standard</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">128 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">4<span style="margin: 0px;"> </span>CPU or 16 cores</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td height="20" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 15pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">1410 MB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">1 CPU or 4 cores</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Web</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">64 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">4 CPU or 16 cores</td>
</tr>
<tr height="34" style="height: 25.5pt;">
<td height="34" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none solid solid; border-width: 0px 0px 0.66px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 25.5pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express with Advanced Services</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 0.66px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">1410 MB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 0.66px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">1 CPU or 4 cores</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1
CPU or 4 cores</td>
</tr>
<tr height="21" style="height: 15.75pt;">
<td height="21" style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 15.75pt; margin: 0px; width: 105pt;" width="140"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 87pt;" width="116"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express with Tools</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">1 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1 CPU or 4 cores</td>
</tr>
<tr height="33" style="height: 24.75pt; mso-height-source: userset;">
<td height="33" style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(255, 255, 255) rgb(255, 255, 255) rgb(0, 0, 0); border-style: solid none none solid; border-width: 1.33px 0px 0px 1.33px; height: 24.75pt; margin: 0px;"><b><span style="color: white; font-family: "calibri";">SQL Server 2012</span></b></td>
<td style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(255, 255, 255) rgb(255, 255, 255); border-style: solid none none; border-width: 1.33px 0px 0px; margin: 0px;"></td>
<td style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(255, 255, 255) rgb(255, 255, 255); border-style: solid solid none none; border-width: 1.33px 1.33px 0px 0px; margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express with Advanced Services</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1 CPU or 4 cores</td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 700; height: 26.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">SQL
Server edition</td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 1.33px; margin: 0px; width: 89pt;" width="118"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum memory supported</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 1.33px; margin: 0px; width: 87pt;" width="116"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum Compute Capacity</span></b></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
</tr>
<tr height="24" style="height: 18.0pt; mso-height-source: userset;">
<td height="24" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: solid none none solid; border-width: 1.33px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 18pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Enterprise</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: solid none none; border-width: 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: solid solid none none; border-width: 1.33px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">OS max</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td colspan="3" style="background-color: #215967; border: 1.33px solid rgb(0, 0, 0); margin: 0px;"><b><span style="color: white; font-family: "calibri";">SQL Server
2008 R2</span></b></td>
</tr>
<tr height="39" style="height: 29.25pt; mso-height-source: userset;">
<td height="39" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 29.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Business
Intelligence</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">64 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">4 CPU or 16 cores</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; margin: 0px; width: 103pt;" width="137"><b><span style="font-family: "calibri"; font-size: x-small;">SQL Server
edition</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; margin: 0px; width: 88pt;" width="117"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum memory
supported</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; margin: 0px; width: 89pt;" width="119"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum Compute
Capacity</span></b></td>
</tr>
<tr height="34" style="height: 25.5pt;">
<td height="34" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 25.5pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Standard</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">64 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">4<span style="margin: 0px;"> </span>CPU or 16 cores</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Datacenter</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">OS
max (64 CPU or 256 logical)<span style="margin: 0px;"> </span></td>
</tr>
<tr height="31" style="height: 23.25pt; mso-height-source: userset;">
<td height="31" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 23.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Web</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">64 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">4 CPU or 16 cores</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Enterprise</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">2 TB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">8 ( or 256 Logical CPU)</span></td>
</tr>
<tr height="23" style="height: 17.25pt; mso-height-source: userset;">
<td height="23" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 17.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">1
CPU or 4 cores</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Developer</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">OS
max</td>
</tr>
<tr height="24" style="height: 18.0pt; mso-height-source: userset;">
<td height="24" style="background-color: transparent; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none none solid; border-width: 0px 0px 0px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 18pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express
with Tools</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">1 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">1 CPU or 4 cores</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Standard</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">64 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">4</span></td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(146, 205, 220); border-style: none none solid solid; border-width: 0px 0px 1.33px 0.66px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 26.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express with Advanced Services</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">1 CPU or 4 cores</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Web</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">64 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">4</td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 26.25pt; margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Workgroup</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">4 GB (64-bit), OS max (32-bit)</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">2</span></td>
</tr>
<tr height="20" style="height: 15.0pt; mso-height-source: userset;">
<td height="20" style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(255, 255, 255) rgb(0, 0, 0) rgb(0, 0, 0); border-style: solid none solid solid; border-width: 1.33px 0px 1.33px 1.33px; height: 15pt; margin: 0px;"><b><span style="color: white; font-family: "calibri";">SQL Server 2008</span></b></td>
<td style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(255, 255, 255); border-style: solid none; border-width: 1.33px 0px; margin: 0px;"></td>
<td style="background-color: #215967; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(255, 255, 255); border-style: solid solid solid none; border-width: 1.33px 1.33px 1.33px 0px; margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1</td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; height: 26.25pt; margin: 0px; width: 105pt;" width="140"><b><span style="font-family: "calibri"; font-size: x-small;">SQL Server edition</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; width: 89pt;" width="118"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum memory
supported</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid; border-width: 0px 1.33px 1.33px 0.66px; margin: 0px; width: 87pt;" width="116"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum Compute
Capacity</span></b></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Express with Tools</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">1 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">1</span></td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 26.25pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Enterprise</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">OS
max (8 CPU or 64 Logical CPU)</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express with Advanced Services</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">1 GB (4 GB for RS)</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1</td>
</tr>
<tr height="21" style="height: 15.75pt;">
<td height="21" style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; height: 15.75pt; margin: 0px; width: 105pt;" width="140"><span style="font-family: "calibri"; font-size: x-small;">Developer</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px;"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
</tr>
<tr height="21" style="height: 15.75pt;">
<td height="21" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 15.75pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Standard</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">4</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td colspan="3" style="background-color: #215967; border: 1.33px solid rgb(0, 0, 0); margin: 0px;"><b><span style="color: white; font-family: "calibri";">SQL Server
2005</span></b></td>
</tr>
<tr height="35" style="height: 26.25pt; mso-height-source: userset;">
<td height="35" style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; height: 26.25pt; margin: 0px; width: 105pt;" width="140"><span style="font-family: "calibri"; font-size: x-small;">Web</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">4</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; margin: 0px; width: 103pt;" width="137"><b><span style="font-family: "calibri"; font-size: x-small;">SQL Server
edition</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; width: 88pt;" width="117"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum memory
supported</span></b></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid; border-width: 0px 1.33px 1.33px 0.66px; margin: 0px; width: 89pt;" width="119"><b><span style="font-family: "calibri"; font-size: x-small;">Maximum Compute
Capacity</span></b></td>
</tr>
<tr height="34" style="height: 25.5pt;">
<td height="34" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 25.5pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Workgroup</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">4 GB (64-bit), OS max (32-bit)</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">2</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Enterprise Edition</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">OS max</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">OS
max</td>
</tr>
<tr height="34" style="height: 25.5pt;">
<td height="34" style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; height: 25.5pt; margin: 0px; width: 105pt;" width="140"><span style="font-family: "calibri"; font-size: x-small;">Express</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">1 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">1</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Developer Edition</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">OS max (32-bit), 32 TB (64-bit)</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
</tr>
<tr height="34" style="height: 25.5pt;">
<td height="34" style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; height: 25.5pt; margin: 0px; text-decoration: none; width: 105pt;" width="140">Express with Tools</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="118">1 GB</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 87pt;" width="116">1</td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Standard Edition</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">OS max, 32 TB (64-bit)</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">4</td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; height: 26.25pt; margin: 0px; width: 105pt;" width="140"><span style="font-family: "calibri"; font-size: x-small;">Express
with Advanced Services</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; width: 89pt;" width="118"><span style="font-family: "calibri"; font-size: x-small;">1 GB</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; width: 87pt;" width="116"><span style="font-family: "calibri"; font-size: x-small;">1</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Workgroup Edition</span></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">3 GB(32-bit)</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">2 (32-bit)</span></td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td height="20" style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 15pt; margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none none none solid; border-width: 0px 0px 0px 1.33px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 103pt;" width="137">Express Edition</td>
<td style="background: rgb(217, 217, 217); border-image: none; border: 0px rgb(0, 0, 0); color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 88pt;" width="117">1 GB(32-bit)</td>
<td style="background: rgb(217, 217, 217); border-color: rgb(0, 0, 0); border-style: none solid none none; border-width: 0px 1.33px 0px 0px; color: black; font-family: Calibri,sans-serif; font-size: 10pt; font-weight: 400; margin: 0px; text-decoration: none; width: 89pt;" width="119">1
(32-bit)</td>
</tr>
<tr height="35" style="height: 26.25pt;">
<td height="35" style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 26.25pt; margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border: 0px rgb(0, 0, 0); margin: 0px;"></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid solid; border-width: 0px 0px 1.33px 1.33px; margin: 0px; width: 103pt;" width="137"><span style="font-family: "calibri"; font-size: x-small;">Evaluation Edition</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none none solid; border-width: 0px 0px 1.33px; margin: 0px; width: 88pt;" width="117"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
<td style="background-color: transparent; border-color: rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1.33px 1.33px 0px; margin: 0px; width: 89pt;" width="119"><span style="font-family: "calibri"; font-size: x-small;">OS max</span></td>
</tr>
</tbody></table>
Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-2872436577712443652017-12-01T03:34:00.000+00:002019-07-13T12:00:53.195+01:00SQLServer Buffer Manager Buffer cache hit ratio, Page Life,Lazy Write/sec, Checkpoint Pages/secWithout any shadow of a doubt, one of the procedures to follow in order to monitor and diagnose performance issues of a database server is to analyse meaningful performance counters related to SQL Server. As a Database Administrator, we need to get used to dealing with this sorts of problems so it truly helpful to know how to analyse and interpret them by contrasting with other windows performance counters.<br />
<br />
To begin with, we can analyse <a href="http://sql-server-performance.com/Community/forums/p/9782/53876.aspx" target="_blank">SQLServer Buffer cache hit ratio</a> performance counter which gives us the percentage of cache memory usage. This percentage should mostly be above 99% for OLTP database servers. Therefore, nowadays 4GB or 8GB of RAM is not good enough for the vast majority of them. The knock-on effect of this lack of RAM is that there will be a huge increase on the I/O disk activity as a result of using much more paging (data pages are moving in and out from memory very frequently because there is not enough space to locate new ones). This will also cause a huge disk queue which will keep disk subsystem busy, consequently, it will impact directly on the database performance detrimentally. In this context, we also need to look into other SQL Server performance counters like SQLServer: Buffer Manager: Page Life Expectancy, SQLServer: Buffer Manager: Lazy Write/sec, and SQLServer: Buffer Manager: Checkpoint Pages/sec. <br />
<br />
As I mentioned before, there are other useful performance counters to diagnose and tune cache memory issues like Buffer Manager: Page Life Expectancy which indicates the time in seconds that a page has been inside of memory. This time should mostly be above 300 seconds, that is, 5 minutes. So, values below it should be considered as an alert, which means that SQL Server is under high memory pressure because bad-written queries may be using a lot. Clearly, the final solution is not to add more memory but identify and optimise those problematic queries. Only after that may you opt to add memory.<br />
<br />
The other performance counter to check is SQLServer: Buffer Manager: Lazy Write/sec which gives the quantity of pages moved out per second from memory. Not only could it mean a lack of memory, but also there are copious amounts of Checkpoints which are not good at all because it will cause recompilation of stored procedures at the same time.The value of this counter should mostly be below 20. So, if you notice this value above 20, you may need to check SQLServer: Buffer Manager: Checkpoint Pages/sec counter as well. Checkpoints move out all pages from memory to disk. <br />
<br />
Finally, keep in mind that it really important to do diagnostic tasks regularly which allow to take preventive actions so as to improve the whole performance over time. I do hope you find this post helpful. Let me know any remarks you may have. Thanks for reading. Stay tuned.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-67105839010174909822017-11-23T21:22:00.000+00:002019-07-13T12:00:59.152+01:00Dropping columns statistics after migrating to SQL Server 2014/2016/2017While migrating databases to new versions of SQL Server, there are some tasks that need to be carried out in order to warrant strong consistent data and physical integrity of databases in tandem with their performance. For instance, it is common to run DBCC CHECKDB, rebuild all indexes, and update columns and index statistics. In some scenarios, we might consider dropping columns statistics and let SQL Server create them again according to new algorithms especially when the new cardinality estimator (CE) is going to be used after upgrading to SQL Server 2014/2016/2017. I personally do that, after restoring databases on the new version of SQL Server I proceed to drop all columns statistics (always having AUTO_CREATE_STATISTICS option enabled) and then SQL Server will definitely create them again based on the nature of database queries and the logic of THE new CE. In a long-term perspective this technique is the most recommendable from my point of view as not only will we have new versions of statistics but also purge old and unused statistics.<br />
Here I will share a script to delete columns statistics. Be caution and only drop them if you have AUTO_CREATE_STATISTICS option enabled, otherwise no statistics will be created and the database performance will be affected tremendously. That is all for now. Let me know any remarks you may have.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">SET</span> NOCOUNT <span style="color: blue;">ON</span>
<span style="color: blue;">IF</span> db_name() <span style="color: blue;">NOT</span> <span style="color: blue;">IN</span> (<span style="color: #006080;">'model'</span>,<span style="color: #006080;">'master'</span>,<span style="color: #006080;">'distribution'</span>,<span style="color: #006080;">'msdb'</span>,<span style="color: #006080;">'tempdb'</span>)
<span style="color: blue;">BEGIN</span>
<span style="color: blue;">DECLARE</span> @schema_name <span style="color: blue;">varchar</span>(<span style="color: blue;">max</span>)
<span style="color: blue;">DECLARE</span> @table_name <span style="color: blue;">varchar</span>(<span style="color: blue;">max</span>)
<span style="color: blue;">DECLARE</span> @stat_name <span style="color: blue;">varchar</span>(<span style="color: blue;">max</span>)
<span style="color: blue;">DECLARE</span> @update_stat_cmd <span style="color: blue;">varchar</span>(<span style="color: blue;">max</span>)
<span style="color: blue;">DECLARE</span> @update_stat_msg_header <span style="color: blue;">varchar</span>(<span style="color: blue;">max</span>)
<span style="color: blue;">DECLARE</span> update_stat_cursor <span style="color: blue;">CURSOR</span> <span style="color: blue;">FOR</span>
<span style="color: blue;">select</span> schema_name(o.[schema_id]), object_name(s1.[object_id]) , s1.name
<span style="color: blue;">from</span> (
<span style="color: blue;">select</span> s.[object_id], s.name <span style="color: blue;">from</span> sys.stats s
<span style="color: blue;">left</span> <span style="color: blue;">join</span> sys.indexes i <span style="color: blue;">on</span> s.name=i.name
<span style="color: blue;">where</span> i.name <span style="color: blue;">is</span> <span style="color: blue;">null</span>) s1
<span style="color: blue;">inner</span> <span style="color: blue;">join</span> sys.objects o <span style="color: blue;">on</span> o.[object_id]=s1.[object_id]
<span style="color: blue;">where</span> o.type=<span style="color: #006080;">'U'</span>
<span style="color: blue;">order</span> <span style="color: blue;">by</span> schema_name(o.[schema_id]), object_name(s1.[object_id]) , s1.name
<span style="color: blue;">OPEN</span> update_stat_cursor
<span style="color: blue;">FETCH</span> <span style="color: blue;">NEXT</span> <span style="color: blue;">FROM</span> update_stat_cursor <span style="color: blue;">INTO</span> @schema_name, @table_name, @stat_name
<span style="color: blue;">WHILE</span> (@@fetch_status = 0)
<span style="color: blue;">BEGIN</span>
<span style="color: blue;">DECLARE</span> @ini DATETIME, @fin DATETIME
<span style="color: blue;">SET</span> @update_stat_msg_header = <span style="color: #006080;">'->Dropping ['</span>+ RTRIM(@schema_name) +<span style="color: #006080;">'].['</span> + RTRIM(@table_name) + <span style="color: #006080;">'].['</span> +@stat_name + <span style="color: #006080;">']'</span>
<span style="color: blue;">PRINT</span> @update_stat_msg_header
<span style="color: blue;">SET</span> @update_stat_cmd =<span style="color: #006080;">'DROP STATISTICS ['</span>+ RTRIM(@schema_name) +<span style="color: #006080;">'].['</span> + RTRIM(@table_name) + <span style="color: #006080;">'].['</span> +@stat_name + <span style="color: #006080;">']'</span>
<span style="color: blue;">SET</span> @ini=GETDATE()
<span style="color: blue;">EXEC</span> (@update_stat_cmd)
<span style="color: blue;">SET</span> @fin=GETDATE()
<span style="color: blue;">FETCH</span> <span style="color: blue;">NEXT</span> <span style="color: blue;">FROM</span> update_stat_cursor <span style="color: blue;">INTO</span> @schema_name, @table_name, @stat_name
<span style="color: blue;">END</span>
<span style="color: blue;">PRINT</span> <span style="color: #006080;">' '</span>
<span style="color: blue;">PRINT</span> <span style="color: #006080;">'----------------------------------------------------------------------------- '</span>
<span style="color: blue;">SET</span> @update_stat_msg_header = <span style="color: #006080;">'************* THERE ARE NO MORE STATISTICS TO BE UPDATED **************'</span>
<span style="color: blue;">PRINT</span> @update_stat_msg_header
<span style="color: blue;">PRINT</span> <span style="color: #006080;">' '</span>
<span style="color: blue;">PRINT</span> <span style="color: #006080;">'All statistics not linked to any index were rebuilt!'</span>
<span style="color: blue;">CLOSE</span> update_stat_cursor
<span style="color: blue;">DEALLOCATE</span> update_stat_cursor
<span style="color: blue;">END</span>
<span style="color: blue;">SET</span> NOCOUNT <span style="color: blue;">OFF</span> </pre>
<br /></div>
Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0tag:blogger.com,1999:blog-7439371001490945169.post-30949480189405377402017-11-11T12:41:00.000+00:002019-07-13T12:02:54.299+01:00How to migrate SQL Server aliases easilyDefinitely, in my daily DBA life many times I had to complete the migration of hundreds of SQL Server aliases without wasting much time. The DBAs always have the need of carrying out administrative tasks quickly and easily, and in this sense today I am going to share with you a technique of how to migrate SQL Server aliases.<br />
<div>
To begin with, think of having three aliases in the database server. You can see them using SQL Server Manager Configuration tool.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCi3YkSLZru8smfY8yMtfwTmFvUpbW9BmnVWxH2BhagpwL41Z1EDD6s4iImsrOqBIrSINzsTusAfDQppnMJtc3h3RdyuJjSZKnhV-ku-TSxz76kko7cB5lT-m604trtJt3Aigtt2Em8WnA/s1600/Export_Import_Aliases_1.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="134" data-original-width="718" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCi3YkSLZru8smfY8yMtfwTmFvUpbW9BmnVWxH2BhagpwL41Z1EDD6s4iImsrOqBIrSINzsTusAfDQppnMJtc3h3RdyuJjSZKnhV-ku-TSxz76kko7cB5lT-m604trtJt3Aigtt2Em8WnA/s1600/Export_Import_Aliases_1.gif" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The technique is to use Export/Import option of the system registry. Be cautious and do not try to modify other things. All the keys of the SQL Server aliases can be found for a x64 system in the following path:</div>
<br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo<br />
<br />
And whether you have SQL Server 32-bit on x64 then the keys are found here:<br />
<br />
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServeโโr\Client\ConnectTo<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK0iu7ehSum-V0oHTfZQawo4ReVUxuhE8BrRdnX3XQqEpCCq6WzxKWD4Sj9gdRVSQdV1oa727jITYZJJjxSrAZ0F4P2lmS8RSYmXbuBk8-2deSXRVkuahs7ZO4uG9eLXPWk5JgNtxcSNeO/s1600/Export_Import_Aliases_2.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="157" data-original-width="779" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK0iu7ehSum-V0oHTfZQawo4ReVUxuhE8BrRdnX3XQqEpCCq6WzxKWD4Sj9gdRVSQdV1oa727jITYZJJjxSrAZ0F4P2lmS8RSYmXbuBk8-2deSXRVkuahs7ZO4uG9eLXPWk5JgNtxcSNeO/s1600/Export_Import_Aliases_2.gif" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Now, once the path was found we need to navigate to it and right click on it to select Export option to export the branch of aliases to a regedit file (.reg). Finally, copy the file to the new server and then using File->Import option you can import them into the registry of the new database server. That is all for now. Let me know any remarks you may have.Percy Reyeshttp://www.blogger.com/profile/10260980907153577811noreply@blogger.com0