<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="en-US">
	<title>Răzvan Cosma's blog - pastebin for various OS X/Windows/Linux/SQL tips&tricks</title>
	<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php" />
	<modified>2010-03-09T22:56:19Z</modified>
	<author>
		<name>Administrator</name>
	</author>
	<copyright>Copyright 2010, Administrator</copyright>
	<generator url="http://www.sourceforge.net/projects/sphpblog" version="0.5.1">SPHPBLOG</generator>
	<entry>
		<title>restart microsoft download manager</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry100130-020013" />
		<content type="text/html" mode="escaped"><![CDATA[%windir%\Downloaded Program Files\TransferMgr.exe]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry100130-020013</id>
		<issued>2010-01-30T00:00:00Z</issued>
		<modified>2010-01-30T00:00:00Z</modified>
	</entry>
	<entry>
		<title>Grant restricted backup and restore privileges</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry100128-172050" />
		<content type="text/html" mode="escaped"><![CDATA[Purpose: allow a specific user to backup and restore database, without giving her full access to the filesystem.<br />As dbo, create the proc below, create the login, grant public access to master, grant dbo access on the needed databases, grant execute on dbo.backupng and dbo.restoreng to sqluser.<br />As user, <br /><code>exec backupng @database=&#039;somename&#039;</code><br /><br /><br /><code><br />exec sp_configure &#039;show advanced options&#039;,1<br />reconfigure<br />go<br />exec sp_configure &#039;xp_cmdshell&#039;,1<br />reconfigure<br />go<br />EXEC sp_xp_cmdshell_proxy_account &#039;domain\user&#039;, &#039;password&#039; --use a restricted user for this one<br />go<br />set nocount on<br />go<br />if exists (select * from dbo.sysobjects where id = object_id(N&#039;[dbo].[backupng]&#039;) and OBJECTPROPERTY(id, N&#039;IsProcedure&#039;) = 1)<br />drop procedure [dbo].[backupng]<br />go<br />create procedure [dbo].[backupng] ( @database sysname ) as<br />declare @rootdir varchar(128)<br />--allow writes only in a specific dir<br />select @rootdir=&#039;d:\sites\sqlbackups\&#039;<br />declare @cmd varchar(128)<br />declare @result varchar(128)<br />SELECT @cmd = &#039;dir &#039; + @rootdir<br />EXEC @result = master.dbo.xp_cmdshell @cmd, no_output<br />IF @result &lt;&gt; 0<br /> BEGIN<br />  SELECT @cmd = &#039;mkdir &#039; + @rootdir<br />  EXEC master.dbo.xp_cmdshell @cmd, NO_OUTPUT<br /> END<br />declare @db varchar(128)<br />select @db = replace(replace(replace(@database,&#039;:&#039;,&#039;&#039;),&#039;&#039;&#039;&#039;,&#039;&#039;),&#039;\&#039;,&#039;&#039;)<br />declare @now varchar(14)<br />declare @filename varchar(128)<br />select @now = replace(replace(replace(convert(varchar(50), getdate(), 120), &#039;-&#039;, &#039;&#039;), &#039; &#039;, &#039;&#039;), &#039;:&#039;, &#039;&#039;)<br />select @filename = @rootdir + @db + &#039;_&#039; + @now + &#039;.bak&#039;<br />BACKUP DATABASE @db TO DISK = @filename WITH INIT<br />go<br /><br />if exists (select * from dbo.sysobjects where id = object_id(N&#039;[dbo].[restoreng]&#039;) and OBJECTPROPERTY(id, N&#039;IsProcedure&#039;) = 1)<br />drop procedure [dbo].[restoreng]<br />go<br />create procedure [dbo].[restoreng] ( @database sysname ) as<br />declare @rootdir varchar(128)<br />select @rootdir=&#039;d:\sites\sqlbackups\&#039;<br />declare @cmd varchar(128)<br />declare @result varchar(128)<br />declare @db varchar(128)<br />select @db = replace(replace(replace(@database,&#039;:&#039;,&#039;&#039;),&#039;&#039;&#039;&#039;,&#039;&#039;),&#039;\&#039;,&#039;&#039;)<br />declare @now varchar(14)<br />declare @filename varchar(128)<br />select @filename = @rootdir + @db + &#039;.bak&#039;<br />--EXEC sp_dboption @db, &#039;single user&#039;, &#039;true&#039;<br />--drop database @db<br />--restore DATABASE @db from disk = @filename<br />go<br /><br /></code>]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry100128-172050</id>
		<issued>2010-01-28T00:00:00Z</issued>
		<modified>2010-01-28T00:00:00Z</modified>
	</entry>
	<entry>
		<title>sql 2005 reduce file sizes</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry100126-194848" />
		<content type="text/html" mode="escaped"><![CDATA[use angajare<br />alter database angajare set recovery simple<br />backup log angajare with truncate_only<br />dbcc shrinkfile (angajare_log, 1)<br />dbcc shrinkfile (angajare, 1)<br />]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry100126-194848</id>
		<issued>2010-01-26T00:00:00Z</issued>
		<modified>2010-01-26T00:00:00Z</modified>
	</entry>
	<entry>
		<title>where&#039;s the security tab?</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry100125-135454" />
		<content type="text/html" mode="escaped"><![CDATA[Either<br /><code>Tools-&gt;Folder Options-&gt;View-&gt; uncheck Use simple file sharing</code><br />or<br /><code>Hive: HKEY_CURRENT_USER<br />Key: Software\Microsoft\windows\CurrentVersion\Policies\Explorer<br />Name: Nosecuritytab<br />Type: REG_DWORD<br />Value: 0</code><br />or <br /><code>convert c: /fs:ntfs</code>]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry100125-135454</id>
		<issued>2010-01-25T00:00:00Z</issued>
		<modified>2010-01-25T00:00:00Z</modified>
	</entry>
	<entry>
		<title>How to copy SQL users to another server</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry100104-152912" />
		<content type="text/html" mode="escaped"><![CDATA[EXEC sp_help_revlogin<br /><br /><code>USE master<br />GO<br />IF OBJECT_ID (&#039;sp_hexadecimal&#039;) IS NOT NULL<br />  DROP PROCEDURE sp_hexadecimal<br />GO<br />CREATE PROCEDURE sp_hexadecimal<br />    @binvalue varbinary(256),<br />    @hexvalue varchar (514) OUTPUT<br />AS<br />DECLARE @charvalue varchar (514)<br />DECLARE @i int<br />DECLARE @length int<br />DECLARE @hexstring char(16)<br />SELECT @charvalue = &#039;0x&#039;<br />SELECT @i = 1<br />SELECT @length = DATALENGTH (@binvalue)<br />SELECT @hexstring = &#039;0123456789ABCDEF&#039;<br />WHILE (@i &lt;= @length)<br />BEGIN<br />  DECLARE @tempint int<br />  DECLARE @firstint int<br />  DECLARE @secondint int<br />  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))<br />  SELECT @firstint = FLOOR(@tempint/16)<br />  SELECT @secondint = @tempint - (@firstint*16)<br />  SELECT @charvalue = @charvalue +<br />    SUBSTRING(@hexstring, @firstint+1, 1) +<br />    SUBSTRING(@hexstring, @secondint+1, 1)<br />  SELECT @i = @i + 1<br />END<br /><br />SELECT @hexvalue = @charvalue<br />GO<br /> <br />IF OBJECT_ID (&#039;sp_help_revlogin&#039;) IS NOT NULL<br />  DROP PROCEDURE sp_help_revlogin<br />GO<br />CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS<br />DECLARE @name sysname<br />DECLARE @type varchar (1)<br />DECLARE @hasaccess int<br />DECLARE @denylogin int<br />DECLARE @is_disabled int<br />DECLARE @PWD_varbinary  varbinary (256)<br />DECLARE @PWD_string  varchar (514)<br />DECLARE @SID_varbinary varbinary (85)<br />DECLARE @SID_string varchar (514)<br />DECLARE @tmpstr  varchar (1024)<br />DECLARE @is_policy_checked varchar (3)<br />DECLARE @is_expiration_checked varchar (3)<br /><br />DECLARE @defaultdb sysname<br /> <br />IF (@login_name IS NULL)<br />  DECLARE login_curs CURSOR FOR<br /><br />      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM <br />sys.server_principals p LEFT JOIN sys.syslogins l<br />      ON ( l.name = p.name ) WHERE p.type IN ( &#039;S&#039;, &#039;G&#039;, &#039;U&#039; ) AND p.name &lt;&gt; &#039;sa&#039; and p.name not like &#039;%\%&#039;<br />ELSE<br />  DECLARE login_curs CURSOR FOR<br /><br /><br />      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM <br />sys.server_principals p LEFT JOIN sys.syslogins l<br />      ON ( l.name = p.name ) WHERE p.type IN ( &#039;S&#039;, &#039;G&#039;, &#039;U&#039; ) AND p.name = @login_name<br />OPEN login_curs<br /><br />FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin<br />IF (@@fetch_status = -1)<br />BEGIN<br />  PRINT &#039;No login(s) found.&#039;<br />  CLOSE login_curs<br />  DEALLOCATE login_curs<br />  RETURN -1<br />END<br />SET @tmpstr = &#039;/* sp_help_revlogin script &#039;<br />PRINT @tmpstr<br />SET @tmpstr = &#039;** Generated &#039; + CONVERT (varchar, GETDATE()) + &#039; on &#039; + @@SERVERNAME + &#039; */&#039;<br />PRINT @tmpstr<br />PRINT &#039;&#039;<br />WHILE (@@fetch_status &lt;&gt; -1)<br />BEGIN<br />  IF (@@fetch_status &lt;&gt; -2)<br />  BEGIN<br />    PRINT &#039;&#039;<br />    SET @tmpstr = &#039;-- Login: &#039; + @name<br />    PRINT @tmpstr<br />    IF (@type IN ( &#039;G&#039;, &#039;U&#039;))<br />    BEGIN -- NT authenticated account/group<br /><br />      SET @tmpstr = &#039;CREATE LOGIN &#039; + QUOTENAME( @name ) + &#039; FROM WINDOWS WITH DEFAULT_DATABASE = [&#039; + @defaultdb + &#039;]&#039;<br />    END<br />    ELSE BEGIN -- SQL Server authentication<br />        -- obtain password and sid<br />            SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, &#039;PasswordHash&#039; ) AS varbinary (256) )<br />        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT<br />        EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT<br /> <br />        -- obtain password policy state<br />        SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN &#039;ON&#039; WHEN 0 THEN &#039;OFF&#039; ELSE NULL END FROM sys.sql_logins WHERE name = @name<br />        SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN &#039;ON&#039; WHEN 0 THEN &#039;OFF&#039; ELSE NULL END FROM sys.sql_logins WHERE name = @name<br /> <br />            SET @tmpstr = &#039;CREATE LOGIN &#039; + QUOTENAME( @name ) + &#039; WITH PASSWORD = &#039; + @PWD_string + &#039; HASHED, SID = &#039; + @SID_string + &#039;, DEFAULT_DATABASE = [&#039; + @defaultdb + &#039;]&#039;<br /><br />        IF ( @is_policy_checked IS NOT NULL )<br />        BEGIN<br />          SET @tmpstr = @tmpstr + &#039;, CHECK_POLICY = &#039; + @is_policy_checked<br />        END<br />        IF ( @is_expiration_checked IS NOT NULL )<br />        BEGIN<br />          SET @tmpstr = @tmpstr + &#039;, CHECK_EXPIRATION = &#039; + @is_expiration_checked<br />        END<br />    END<br />    IF (@denylogin = 1)<br />    BEGIN -- login is denied access<br />      SET @tmpstr = @tmpstr + &#039;; DENY CONNECT SQL TO &#039; + QUOTENAME( @name )<br />    END<br />    ELSE IF (@hasaccess = 0)<br />    BEGIN -- login exists but does not have access<br />      SET @tmpstr = @tmpstr + &#039;; REVOKE CONNECT SQL TO &#039; + QUOTENAME( @name )<br />    END<br />    IF (@is_disabled = 1)<br />    BEGIN -- login is disabled<br />      SET @tmpstr = @tmpstr + &#039;; ALTER LOGIN &#039; + QUOTENAME( @name ) + &#039; DISABLE&#039;<br />    END<br />    PRINT @tmpstr<br />  END<br /><br />  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin<br />   END<br />CLOSE login_curs<br />DEALLOCATE login_curs<br />RETURN 0<br />GO</code><br />]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry100104-152912</id>
		<issued>2010-01-04T00:00:00Z</issued>
		<modified>2010-01-04T00:00:00Z</modified>
	</entry>
	<entry>
		<title>How to create / consume a .Net web service</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091219-224424" />
		<content type="text/html" mode="escaped"><![CDATA[<code>[WebService(Namespace = &quot;http://server&quot;)]<br />[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]<br />public class myservice : WebService {<br />    [WebMethod]<br />    public string someq(string var1, string var2)<br />    {        <br />        return var1+var2;<br />    }<br /></code><br /><br /><code>&lt;?php<br />$wsdl = &quot;http://server/service.asmx?wsdl&quot;;<br />$client = new SoapClient($wsdl);<br />var_dump($client-&gt;someq(array(&#039;var1&#039;=&gt;&quot;val1&quot;, &#039;var2&#039;=&gt;&quot;val2&quot;)));<br />?&gt;<br /></code>]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091219-224424</id>
		<issued>2009-12-19T00:00:00Z</issued>
		<modified>2009-12-19T00:00:00Z</modified>
	</entry>
	<entry>
		<title>Restore Show Desktop icon to Quick Launch bar</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091212-003432" />
		<content type="text/html" mode="escaped"><![CDATA[regsvr32 /n /i:U shell32]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091212-003432</id>
		<issued>2009-12-11T00:00:00Z</issued>
		<modified>2009-12-11T00:00:00Z</modified>
	</entry>
	<entry>
		<title>How to fix a database in one simple step</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091209-105858" />
		<content type="text/html" mode="escaped"><![CDATA[<code>DECLARE @db nvarchar(50)<br />set @db=&#039;my.datab.name&#039;<br />--close all connections<br />DECLARE @SPId int<br />DECLARE @CMD varchar(100)<br />DECLARE my_cursor CURSOR FAST_FORWARD FOR<br />SELECT SPId FROM MASTER..SysProcesses<br />WHERE DBId = DB_ID(@db) AND SPId &lt;&gt; @@SPId<br />OPEN my_cursor<br />FETCH NEXT FROM my_cursor INTO @SPId<br />WHILE @@FETCH_STATUS = 0<br />BEGIN<br />SELECT @CMD = &#039;KILL &#039; + CAST(@SPId AS varchar(10))<br />EXEC (@CMD)<br />FETCH NEXT FROM my_cursor INTO @SPId<br />END<br />CLOSE my_cursor<br />DEALLOCATE my_cursor<br /><br />exec(&#039;ALTER DATABASE [&#039;+ @db +&#039;] SET SINGLE_USER WITH NO_WAIT&#039;)<br />dbcc checkdb(@db, REPAIR_ALLOW_DATA_LOSS)<br />exec(&#039;ALTER DATABASE [&#039;+ @db +&#039;] SET MULTI_USER WITH NO_WAIT&#039;)<br />--try another dbcc checkdb afterwards to be sure it&#039;s fixed</code>]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091209-105858</id>
		<issued>2009-12-09T00:00:00Z</issued>
		<modified>2009-12-09T00:00:00Z</modified>
	</entry>
	<entry>
		<title>Publish a 32-bit .Net app to 2003 x64 server</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091203-164219" />
		<content type="text/html" mode="escaped"><![CDATA[1. %windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -u<br />2. %windir%\system32\cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1<br />3. %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i<br />4. Enable the 32-bit ASP.net extension from IIS Manager]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091203-164219</id>
		<issued>2009-12-03T00:00:00Z</issued>
		<modified>2009-12-03T00:00:00Z</modified>
	</entry>
	<entry>
		<title>How to read a .ini file in .Net</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091125-165314" />
		<content type="text/html" mode="escaped"><![CDATA[There is no ready-made class, so you&#039;ll have to call the Windows API<br /><br /><code><br />[DllImport(&quot;KERNEL32.DLL&quot;, EntryPoint = &quot;GetPrivateProfileStringW&quot;,<br />            SetLastError = true,<br />            CharSet = CharSet.Unicode, ExactSpelling = true,<br />            CallingConvention = CallingConvention.StdCall)]<br />private static extern int GetPrivateProfileString(<br />            string lpAppName,<br />            string lpKeyName,<br />            string lpDefault,<br />            string lpReturnString,<br />            int nSize,<br />            string lpFilename);<br />[DllImport(&quot;KERNEL32.DLL&quot;, EntryPoint = &quot;WritePrivateProfileStringW&quot;,<br />            SetLastError = true,<br />            CharSet = CharSet.Unicode, ExactSpelling = true,<br />            CallingConvention = CallingConvention.StdCall)]<br />private static extern int WritePrivateProfileString(<br />            string lpAppName,<br />            string lpKeyName,<br />            string lpString,<br />            string lpFilename);<br /><br />private static List&lt;string&gt; GetCategories(string iniFile)<br />        {<br />            string returnString = new string(&#039; &#039;, 65536);<br />            GetPrivateProfileString(null, null, null, returnString, 65536, iniFile);<br />            List&lt;string&gt; result = new List&lt;string&gt;(returnString.Split(&#039;\0&#039;));<br />            result.RemoveRange(result.Count - 2, 2);<br />            return result;<br />        }<br />private static List&lt;string&gt; GetKeys(string iniFile, string category)<br />        {<br />            string returnString = new string(&#039; &#039;, 32768);<br />            GetPrivateProfileString(category, null, null, returnString, 32768, iniFile);<br />            List&lt;string&gt; result = new List&lt;string&gt;(returnString.Split(&#039;\0&#039;));<br />            result.RemoveRange(result.Count-2,2);<br />            return result;<br />        }<br /><br />private static string GetIniFileString(string iniFile, string category, string key, string defaultValue)<br />        {<br />            string returnString = new string(&#039; &#039;, 1024);<br />            GetPrivateProfileString(category, key, defaultValue, returnString, 1024, iniFile);<br />            return returnString.Split(&#039;\0&#039;)[0];<br />        }<br /></code><br /><br />and use like this:<br /><br /><code>string inifile = System.AppDomain.CurrentDomain.BaseDirectory + @&quot;\settings.ini&quot;; string defaultValue = &quot;???&quot;;<br />List&lt;string&gt; categories = GetCategories(inifile);<br />            foreach (string c in categories)<br />            {<br />                List&lt;string&gt; keys = GetKeys(inifile, c);<br />                foreach ..  val = GetIniFileString(inifile, c, k, defaultValue);    <br />            }<br /><br />WritePrivateProfileString(&quot;GLOBAL&quot;, &quot;Stuff&quot;, &quot;The content of that stuff&quot;, &quot;MyIniFile.ini&quot;);</code><br /><br />Picked <a href="http://jachman.wordpress.com/2006/09/11/how-to-access-ini-files-in-c-net/" target="_blank" >from here</a><br />]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091125-165314</id>
		<issued>2009-11-25T00:00:00Z</issued>
		<modified>2009-11-25T00:00:00Z</modified>
	</entry>
	<entry>
		<title>Restore database to an earlier version of MS SQL Server</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091125-134614" />
		<content type="text/html" mode="escaped"><![CDATA[Connect to the source -&gt; Tasks -&gt; Generate Scripts -&gt; check &quot;Script all objects&quot; -&gt; Script Database Create = true -&gt; Script for Server Version = 200x -&gt; Script Logins = false -&gt; Script Data = true -&gt; Script anything else needed (constraints, fulltext, etc) -&gt; Finish -&gt; change the path for CREATE DATABASE if needed -&gt; execute the script on the other server<br />]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091125-134614</id>
		<issued>2009-11-25T00:00:00Z</issued>
		<modified>2009-11-25T00:00:00Z</modified>
	</entry>
	<entry>
		<title>How to start a program/script before logging in</title>
		<link rel="alternate" type="text/html" href="http://razvan.cosma.name/weblog/index.php?entry=entry091113-161135" />
		<content type="text/html" mode="escaped"><![CDATA[Option 1: srvany and instsrv from the <a href="http://www.petri.co.il/download_windows_2003_reskit_tools.htm" target="_blank" >Windows Resource Kit</a><br />Option 2: Start-&gt;Run-&gt;MMC-&gt;Add snap-in-&gt;Group policy-&gt;Local computer-&gt;Computer configuration-&gt;Windows settings-&gt;Scripts<br />The applications will run as Local System<br />]]></content>
		<id>http://razvan.cosma.name/weblog/index.php?entry=entry091113-161135</id>
		<issued>2009-11-13T00:00:00Z</issued>
		<modified>2009-11-13T00:00:00Z</modified>
	</entry>
</feed>
