<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3292103026133437676</id><updated>2011-11-28T13:16:08.648+13:00</updated><category term='sp_addrolemember'/><category term='linked server'/><category term='MSSQL'/><category term='transaction'/><category term='PostgreSQL'/><category term='64-bit'/><category term='Collation'/><title type='text'>Undefined</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://eddiecjc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://eddiecjc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>eddiecjc</name><uri>http://www.blogger.com/profile/16355723658301713585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Igt5cd860Po/ScvYg7NAgDI/AAAAAAAABm4/83kBuMnwuqk/S220/Avatar_square.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3292103026133437676.post-9196241649426342212</id><published>2009-07-16T11:45:00.003+12:00</published><updated>2009-07-16T12:03:44.013+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='sp_addrolemember'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>MSSQL Hack: be able to execute sys.sp_addrolemember within a transaction</title><content type='html'>sys.sp_addrolemember is a MS SQL Server system stored procedure that cannot be executed within a user-defined transaction.&lt;br /&gt;The work around is to &lt;b&gt;terminate/commit any outer transaction&lt;/b&gt; (only in scenarios where the caller does not have any change *prior to calling sp_addrolemember*, that may need rolling back if something fails *after calling sp_addrolemember*, as this might affect the caller to lose the capability of rolling back unwanted changes).&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;SET IMPLICIT_TRANSACTIONS OFF -- make sure server does not start any implicit transaction &lt;br /&gt;WHILE XACT_STATE() = 1 -- the transaction is committable&lt;br /&gt;  COMMIT TRAN -- Try committing any outer transaction, in order for &lt;br /&gt;&lt;br /&gt;EXEC sp_addrolemember&lt;br /&gt;  @rolename = 'rolename',&lt;br /&gt;  @membername = 'db_user_name'&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3292103026133437676-9196241649426342212?l=eddiecjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eddiecjc.blogspot.com/feeds/9196241649426342212/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://eddiecjc.blogspot.com/2009/07/mssql-hack-be-able-to-execute.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/9196241649426342212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/9196241649426342212'/><link rel='alternate' type='text/html' href='http://eddiecjc.blogspot.com/2009/07/mssql-hack-be-able-to-execute.html' title='MSSQL Hack: be able to execute sys.sp_addrolemember within a transaction'/><author><name>eddiecjc</name><uri>http://www.blogger.com/profile/16355723658301713585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Igt5cd860Po/ScvYg7NAgDI/AAAAAAAABm4/83kBuMnwuqk/S220/Avatar_square.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3292103026133437676.post-9011206935990871738</id><published>2009-07-09T12:56:00.003+12:00</published><updated>2009-07-15T18:55:54.191+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Collation'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Comparing between different collations</title><content type='html'>In MSSQL 2005, when comparing string (nvarchar, varchar, etc..) between different collations e.g.&lt;br /&gt;&lt;code&gt;SELECT * FROM sys.sql_logins &lt;br /&gt;WHERE NAME NOT IN (&lt;br /&gt; SELECT login_name FROM RESOURCE&lt;br /&gt;)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;SQL Server would throw an error due to different collations set for the columns compared:&lt;br /&gt;&lt;code&gt;&lt;font color="red"&gt;Msg 468, Level 16, State 9, Line 1&lt;br /&gt;Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CS_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.&lt;/font&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So, to be able to compare between different collations, &lt;code&gt;COLLATEE DATABASE_DEFAULT&lt;/code&gt; can be used, which would convert the column(s) to the collation the current database is using, and the new query looks like:&lt;br /&gt;&lt;code&gt;SELECT * FROM sys.sql_logins &lt;br /&gt;WHERE NAME &lt;font color="blue"&gt;COLLATE DATABASE_DEFAULT&lt;/font&gt; NOT IN (&lt;br /&gt; SELECT login_name &lt;font color="blue"&gt;COLLATE DATABASE_DEFAULT&lt;/font&gt; FROM RESOURCE&lt;br /&gt;)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In addition, if the collation for one of the columns being compared is known, all the other columns can be converted to the same collation:&lt;br /&gt;&lt;code&gt;SELECT * FROM sys.sql_logins &lt;br /&gt;WHERE NAME &lt;font color="blue"&gt;COLLATE SQL_Latin1_General_CP1_CS_AS&lt;/font&gt; NOT IN (&lt;br /&gt; SELECT login_name FROM RESOURCE&lt;br /&gt;)&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3292103026133437676-9011206935990871738?l=eddiecjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eddiecjc.blogspot.com/feeds/9011206935990871738/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://eddiecjc.blogspot.com/2009/07/comparing-different-collations.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/9011206935990871738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/9011206935990871738'/><link rel='alternate' type='text/html' href='http://eddiecjc.blogspot.com/2009/07/comparing-different-collations.html' title='Comparing between different collations'/><author><name>eddiecjc</name><uri>http://www.blogger.com/profile/16355723658301713585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Igt5cd860Po/ScvYg7NAgDI/AAAAAAAABm4/83kBuMnwuqk/S220/Avatar_square.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3292103026133437676.post-2967954186868255214</id><published>2009-05-06T14:38:00.005+12:00</published><updated>2009-05-08T11:39:48.831+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='linked server'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL'/><title type='text'>Set up PostgreSQL as a linked server in Microsoft SQL Server 32-bit on a Windows Server 2003 64-bit</title><content type='html'>&lt;b&gt;Environment&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Machine 1&lt;br /&gt;IP: 10.2.29.183&lt;br /&gt;OS: Windows Vista Business SP1&lt;br /&gt;DB: PostgreSQL 8.3, port: 5432&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Machine 2&lt;br /&gt;IP: 10.2.29.18&lt;br /&gt;OS: Windows Server 2003 Enterprise x64 Edition SP2&lt;br /&gt;DB: Microsoft SQL Server X86 Standard 9.00.1399.06, port: 4900&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Procedures&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Machine 1&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Make sure port 5432 is opened in the firewall.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make sure Machine 2 is granted access to PostgreSQL. The access config file is at C:\Program Files\PostgreSQL\8.3\data\pg_hba.conf in this case. &lt;code&gt;host    all         all         10.2.29.18/32         md5&lt;/code&gt; is added to the end of the file.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Machine 2&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;del&gt;Install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=000364db-5e8b-44a8-b9be-ca44d18b059b&amp;amp;displaylang=en"&gt;64-Bit OLEDB Provider for ODBC (MSDASQL)&lt;/a&gt;, the installer file is WindowsServer2003.WindowsXP-KB948459-v2-x64-ENU.exe in this case.&lt;/del&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://www.postgresql.org/ftp/odbc/versions/msi/"&gt;32-bit PostgreSQL ODBC driver&lt;/a&gt;, choose the appropriate PostgreSQL version matching the setup (in this case psqlodbc_08_03_xxxx.zip).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In SQL Server Management Studio, create a linked server using the following command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;EXEC sp_addlinkedserver &lt;br /&gt; @server = '10.2.29.183', &lt;br /&gt; @srvproduct = 'PostgreSQL', &lt;br /&gt; @provider = 'MSDASQL', &lt;br /&gt; @provstr = 'Driver=PostgreSQL ANSI;uid=postgres;Server=10.2.29.183;Port=5432;database=my_db_name;pwd=my_password';&lt;br /&gt; &lt;br /&gt;EXEC sp_addlinkedsrvlogin &lt;br /&gt; @rmtsrvname = '10.2.29.183',&lt;br /&gt; @useself = 'false',&lt;br /&gt; @rmtuser = 'postgres', &lt;br /&gt; @rmtpassword = 'my_password';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;li&gt;To test the connection: &lt;br /&gt;&lt;code&gt;&lt;br /&gt;SELECT * &lt;br /&gt;FROM OPENQUERY([10.2.29.183], 'SELECT * FROM information_schema.tables')&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"Using 32 bit ODBC driver in x64?". Available: &lt;a href="http://forums.techarena.in/windows-x64-edition/698703.htm"&gt;http://forums.techarena.in/windows-x64-edition/698703.htm&lt;/a&gt; [Accessed: May 06, 2009].&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Postgres OnLine Journal, "SETTING UP POSTGRESQL AS A LINKED SERVER IN MICROSOFT SQL SERVER 64-BIT". Available: &lt;a href="http://www.postgresonline.com/journal/index.php?/archives/46-Setting-up-PostgreSQL-as-a-Linked-Server-in-Microsoft-SQL-Server-64-bit.html"&gt;http://www.postgresonline.com/journal/index.php?/archives/46-Setting-up-PostgreSQL-as-a-Linked-Server-in-Microsoft-SQL-Server-64-bit.html&lt;/a&gt; [Accessed: May 06, 2009].&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3292103026133437676-2967954186868255214?l=eddiecjc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eddiecjc.blogspot.com/feeds/2967954186868255214/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://eddiecjc.blogspot.com/2009/05/set-up-postgresql-as-linked-server-in.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/2967954186868255214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3292103026133437676/posts/default/2967954186868255214'/><link rel='alternate' type='text/html' href='http://eddiecjc.blogspot.com/2009/05/set-up-postgresql-as-linked-server-in.html' title='Set up PostgreSQL as a linked server in Microsoft SQL Server 32-bit on a Windows Server 2003 64-bit'/><author><name>eddiecjc</name><uri>http://www.blogger.com/profile/16355723658301713585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Igt5cd860Po/ScvYg7NAgDI/AAAAAAAABm4/83kBuMnwuqk/S220/Avatar_square.jpg'/></author><thr:total>0</thr:total></entry></feed>
