<p>On my current project, I came across our master DB script. Taking a closer look at it, I noticed that all of our original primary keys have a data type of <strong>numeric(38,0)</strong>
We are currently running SQL Server 2005 as our primary DB platform.</p>

<p>For a little context, we support both Oracle and SQL Server as our back-end. In Oracle, our primary keys have a data type of <strong>number(38,0).</strong></p>

<p>Does anybody know of possible side-effects and performance impact of such implementation? I have always advocated and implemented <em>int</em> or <em>bigint</em> as primary keys and would love to know if numeric(38,0) is a better alternative.</p>

Barring the storage considerations and some initial confusion from future DBAs, I don't see any reason why NUMERIC(38,0) would be a bad idea. You're allowing for up to 9.99 x 10^38 records in your table, which you will certainly never reach. My quick digging into this didn't turn up any glaring reason not to use it. I suspect that your only potential issue will be the storage space consumed by that, but seeing as how storage space is so cheap, that shouldn't be an issue.
I've seen this a fair number of times in Oracle databases since it's a pretty big default value that you don't need to think about when you're creating a table, similar to using INT or BIGINT by default in SQL Server.